【问题标题】:Laravel dusk issue with selectors选择器的 Laravel 黄昏问题
【发布时间】:2020-04-03 13:12:25
【问题描述】:

我正在使用 Dusk 测试我的 Laravel 网站。问题是 Dusk 找不到某个元素。我已经使用 Chrome 开发者工具复制了元素选择器,我的代码如下所示。

$browser->assertSeeIn('#content-container > div > div.table-responsive > table > tbody > tr > td:nth-child(1)', 'Test 1');

我也尝试过 xpath。也失败。我以非无头方式运行测试,因此我可以看到显示了正确的页面。 Dusk 确实有一些问题,即使它在正确的页面上也找不到元素。我也试过:

$browser->assertSeeIn('table > tbody > tr > td:nth-child(1)', 'Test 1');

我错过了什么???

【问题讨论】:

  • 这个元素是包含在服务器的 HTML 响应中,还是在页面加载时用 JavaScript 插入?
  • 在生成的html中。我不通过 Javascript 添加任何 html。我使用 wget 来下载纯源代码,并且内容容器就在那里。由于某种原因,我注意到在测试结束时我看到了一些用户的 json 代码。网址是 localhost:8080/_dusk/user。显然是黄昏做的事情

标签: laravel laravel-dusk


【解决方案1】:

您是否有机会在无头模式下运行测试?我有一个类似的问题(测试取决于选择器)。检查您的基类 (DuskTestCase) 的驱动程序方法。

protected function driver()
{
    $options = (new ChromeOptions)->addArguments([
        '--disable-gpu',
        '--window-size=1024,768',
        // headless mode breaks every test that assert stuff about the url or use css/dusk selectors.
        // '--headless', 
        '--no-sandbox',
    ]);

    ...

}

【讨论】:

  • 我关闭了无头模式。
  • 你检查过chrome驱动安装正确了吗?您是否在黄昏试图到达的端口上启动并运行服务器? (我认为默认情况下它会在 localhost:8080 上尝试)
【解决方案2】:

我找到了答案。我在测试中使用了 assertAuthenticated() ,这迫使浏览器转到登录用户的 json 消息。因此,如果您只是进行测试,请避免一起使用 assertAuthenticated()。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-06-13
    • 2018-02-23
    • 2023-04-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-20
    • 1970-01-01
    相关资源
    最近更新 更多