gpt4 book ai didi

laravel - 在 Laravel Dusk 中记录 Javascript 控制台输出

转载 作者:行者123 更新时间:2023-12-02 17:09:30 25 4
gpt4 key购买 nike

我使用的是 Laravel 5.6 和 Laravel Dusk 3.0.9。

Dusk 非常方便,但是当测试在具有某些 Javascript 功能的页面上失败时,很难找出问题所在。 Dusk 会生成一个屏幕截图,这很有帮助,但我真正需要的是查看 Javascript 控制台的输出。

显然这是可能的 - Dusk 在安装过程中创建了一个 tests/Browser/console 目录,并且 this PR suggests the JS console output is logged ,或者至少是可记录的。

但没有(我能找到的)关于如何实际执行此操作的文档。 Browsing the diffs in that PR ,我看到一个新方法 logConsole() (后来重命名为 storeConsoleLog() 正如@Jonas 在评论中指出的那样),但我似乎无法将其实现做任何事情,例如:

$browser->visit('/somewhere')
->select('#foo', '2')
->value('#date', '2018-07-29')
->storeConsoleLog('bar')
->assertEnabled('button[type=submit]');

此测试失败,并生成了一个漂亮的屏幕截图,但没有任何日志文件的迹象。我尝试在链中移动 ->storeConsoleLog('bar') 的位置,例如第一个或最后一个,并作为链之前或之后的单独行:

$browser->visit('/somewhere')
->...full chain here;
$browser->storeConsoleLog('bar');

但是它们都没有任何区别。我的 JS 有一系列 console.log(),我在浏览器中测试自己时使用它们,它会告诉我到底出了什么问题。我希望这个功能能够记录这些消息。

我是否误解了 PR,这可能吗?如果是这样,怎么办?

更新

通过调试 vendor/laravel/dusk/src/Browser.php 中的 storeConsoleLog() 方法,我可以看到该方法被正确调用,但是有没有要记录的控制台内容。如果我在 Chrome 中手动重复测试所采取的步骤,则会有一些行被写入 Chrome 开发工具控制台,实际上有 3 行是在页面加载时写入的。为什么黄昏看不到那些?

更新2

我发现,如果你从DuskTestCase中的driver()方法中删除'--headless',浏览器将在测试。然后,您可以显示该浏览器的开发工具,并在测试运行时实时观看控制台输出。它太快了,没有真正的用处,如果出现错误,浏览器将关闭,并且您无论如何都会丢失控制台上的任何内容(除非有办法在失败时让浏览器保持打开状态?),但在此处添加此以防万一对某人有用!

最佳答案

显然没有办法从浏览器获取非错误控制台输出。

other log types ,但 Chrome 仅支持浏览器(Dusk 使用)和驱动程序

您可能需要使用警报。但屏幕截图不包含警报,因此您必须获取文本:

$browser->driver->switchTo()->alert()->getText()

您还可以使用 document.write() 之类的方法并检查屏幕截图上的输出。

关于laravel - 在 Laravel Dusk 中记录 Javascript 控制台输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51573957/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com