无法在 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()

我的问题解决了。