无法在 Laravel Dusk 中截屏
Can't take screenshot in Laravel Dusk
我们正在将验收测试从 Codeception 过渡到 Laravel Dusk。使用 laravel 5.6。
应用程序已 dockerized,我们使用单独的 selenium/standalone-chrome 图像。
当测试失败时,tests/Browser/screenshots 中有屏幕截图
但是当我尝试手动获取它们时,它们就是不起作用。
我尝试了两种方式:
$browser->screenshot('test');
$browser->driver->takeScreenshot(base_path('tests/Browser/screenshots/test2.png'));
同样的结果。 tests/Browser/screenshots.
中没有错误,也没有屏幕截图
为什么会这样?
尝试覆盖 captureFailuresFor() 方法:
protected function captureFailuresFor($browsers)
{
$browsers->each(function (Browser $browser, $key) {
$body = $browser->driver->findElement(WebDriverBy::tagName('body'));
if (!empty($body)) {
$currentSize = $body->getSize();
$size = new WebDriverDimension($currentSize->getWidth(), $currentSize->getHeight());
$browser->driver->manage()->window()->setSize($size);
}
$browser->screenshot('failure-'.$this->getName().'-'.$key);
});
}
也许这个讨论对你有帮助:
https://github.com/laravel/dusk/issues/320
好的,问题是我的代码没有执行。
原因是我给函数命名错了
public function checkDashboard()
结果是 dusk 不以 "test" 开头的所有内容都不会执行。就像在 phpunit 中一样。但它在文档中并没有这么说。
所以在将其更改为
之后
public function testCheckDashboard()
我的问题解决了。
我们正在将验收测试从 Codeception 过渡到 Laravel Dusk。使用 laravel 5.6。
应用程序已 dockerized,我们使用单独的 selenium/standalone-chrome 图像。
当测试失败时,tests/Browser/screenshots 中有屏幕截图 但是当我尝试手动获取它们时,它们就是不起作用。 我尝试了两种方式:
$browser->screenshot('test');
$browser->driver->takeScreenshot(base_path('tests/Browser/screenshots/test2.png'));
同样的结果。 tests/Browser/screenshots.
中没有错误,也没有屏幕截图为什么会这样?
尝试覆盖 captureFailuresFor() 方法:
protected function captureFailuresFor($browsers)
{
$browsers->each(function (Browser $browser, $key) {
$body = $browser->driver->findElement(WebDriverBy::tagName('body'));
if (!empty($body)) {
$currentSize = $body->getSize();
$size = new WebDriverDimension($currentSize->getWidth(), $currentSize->getHeight());
$browser->driver->manage()->window()->setSize($size);
}
$browser->screenshot('failure-'.$this->getName().'-'.$key);
});
}
也许这个讨论对你有帮助: https://github.com/laravel/dusk/issues/320
好的,问题是我的代码没有执行。
原因是我给函数命名错了
public function checkDashboard()
结果是 dusk 不以 "test" 开头的所有内容都不会执行。就像在 phpunit 中一样。但它在文档中并没有这么说。 所以在将其更改为
之后public function testCheckDashboard()
我的问题解决了。