我写了一个 Laravel Dusk 测试。我试图断言模式打开后某些文本是否可见。所以,我正在使用该whenAvailable方法。但当我可以看到屏幕截图中的文本时,它失败了。
$browser->press('@finish-setup-button')
->whenAvailable('#modal-payment-info', function ($modal) use($paymentInfo) {
$modal->assertSee(html_entity_decode(__('account_setup.payment')))
->type('name', $paymentInfo->name)
->type('iban', $paymentInfo->iban)
->type('bic', $paymentInfo->bic)
->press('@subscribe-button');
});
Run Code Online (Sandbox Code Playgroud)
我收到以下消息:
有1次失败:
1) Tests\Browser\RegistrationTest::testRegistration 在元素 [body #modal- payment-info] 中没有看到预期的文本 [Payment]。未能断言 false 为 true。
截屏:
我究竟做错了什么?
说我需要为多个浏览器开发一个网站.主要的 - Firefox,Safari,IE,Opera,Chrome
你如何调试显示问题?在Firefox中有Firebug,这很棒.还有一个适用于其他浏览器的Firebug Lite,但它并不是全功能的 - 它不会实时刷新.例如,如果我怀疑jQuery正在减慢它(添加类等),我怎么知道?
除了我的 ASP.NET 应用程序中的错误报告之外,我还检索浏览器信息。例如,我经常收到特定错误:
Type = Mozilla
Name = Mozilla
Version = 5.0
Major Version = 5
Minor Version = 0
Platform = Unknown
Is Beta = False
Is Crawler = False
Is AOL = False
Is Win16 = False
Is Win32 = False
Supports Frames = False
Supports Tables = False
Supports Cookies = False
Supports VBScript = False
Supports JavaScript = False
0.0
Supports Java Applets = False
Supports ActiveX Controls = False
Run Code Online (Sandbox Code Playgroud)
我的第一个想法是firefox,但是我也得到firefox的特定错误,所以我不确定上面的信息到底是什么浏览器?
谢谢
我无法与带有casperjs的jquery自动完成输入框进行交互.我尝试了很多不同的方法,但是当弹出选项列表时,我似乎无法选择自动完成选项.
我的代码如下:
casper.thenEvaluate(function() {
$('#myInput').val('cars'); // fill in the text box
$('#myInput').blur(); // should trigger the autocomplete ajax call
$('.ui-autocomplete li.ui-menu-item:nth-of-type(1)').click(); // should click the first item in the list
});
// take a picture to make sure it worked
casper.then(function() {
this.captureSelector('pics/test1.png', '#theForm');
});
Run Code Online (Sandbox Code Playgroud)
这根本不起作用,即使看起来应该如此.通过玩弄它,我发现触发向下箭头按键几次触发自动完成显示,所以这是一个更接近工作的版本.这适用于浏览器,但由于某种原因不适用于casper.thenEvaluate块.
$('#myInput').val('cars'); // fill in the text box
var e = jQuery.Event("keydown");
e.which = 40; // press down arrow a few times, not sure why this works
$("#myInput").trigger(e);
$("#myInput").trigger(e);
$('.ui-autocomplete li.ui-menu-item:nth-of-type(1)').click();
Run Code Online (Sandbox Code Playgroud) jquery browser-automation browser-testing jquery-autocomplete casperjs
我正在使用 Laravel 框架开发 Web 应用程序。我正在我的应用程序上运行 Dus/浏览器单元测试。但是现在我在断言所选元素是否存在时遇到问题。
我有包含此代码片段的视图文件。
@if(auth()->user()->role == 1)
<a dusk="button-create" href="/create">
Create
</a>
@endif
Run Code Online (Sandbox Code Playgroud)
我正在测试该按钮是否存在于 Dusk 单元测试中。
$this->browse(function (Browser $browser) use ($admin) {
$browser->loginAs($admin)->visit(url);
$textContent = $browser->text("@button-create");
$this->assertNotEmpty($textContent);
});
Run Code Online (Sandbox Code Playgroud)
使用上面的代码测试按钮是否存在很好。但是当我测试按钮是否不存在时。
$this->browse(function (Browser $browser) use ($student) {
$browser->loginAs($student)->visit(url);
$textContent = $browser->text("@button-create");
$this->assertEmpty($textContent);
});
Run Code Online (Sandbox Code Playgroud)
我收到此错误。
no such element: Unable to locate element: {"method":"css selector","selector":"body [dusk="button-create"]"}
Run Code Online (Sandbox Code Playgroud)
我可以想到的一个解决方案是用另一个元素包装 html 元素并在其上设置选择器。像这样的东西。
<span dusk="button-create">
@if(auth()->user()->role == 1)
<a href="/create">
Create
</a>
@endif
</span>
Run Code Online (Sandbox Code Playgroud)
但我不想用另一个 html 标签包装它。是否可以不包装另一个标签?如何?
用户操作后,Web应用程序始终使用此div.我的测试脚本有这一行.逐字逐句.
@browser.div(:id => 'loading-indicator').wait_while_present
Run Code Online (Sandbox Code Playgroud)
在任何地方明确地包括这条线是可以的,但是丑陋和重复.
使用wait_until_present与下一元素(" foo负载指示后"),有时会工作.然而,在某些情况下foo和负载指示同时存在,但foo不是visible?直到负载指示消失.
有没有办法,或许在env.rb,向watir-webdriver表明它应该始终wait_while存在这个元素?