laravel dusk 通过测试发现会话 ID 无效

问题描述 投票:0回答:1
  1. 测试\浏览器\MedewerkerContactTest::testGeenBericht Facebook\WebDriver\Exception\InvalidSessionIdException:会话 ID 无效

测试文件将在下面的随机测试用例上返回此错误消息,您可以在此处看到完整的错误消息


2) Tests\\Browser\\MedewerkerContactTest::testGeenBericht
   Facebook\\WebDriver\\Exception\\InvalidSessionIdException: invalid session id

/var/www/vendor/php-webdriver/webdriver/lib/Exception/WebDriverException.php:107
/var/www/vendor/php-webdriver/webdriver/lib/Remote/HttpCommandExecutor.php:372
/var/www/vendor/php-webdriver/webdriver/lib/Remote/RemoteWebDriver.php:585
/var/www/vendor/php-webdriver/webdriver/lib/Remote/RemoteExecuteMethod.php:27
/var/www/vendor/php-webdriver/webdriver/lib/WebDriverOptions.php:166
/var/www/vendor/laravel/dusk/src/Browser.php:408
/var/www/vendor/laravel/dusk/src/Concerns/ProvidesBrowser.php:164
/var/www/vendor/laravel/framework/src/Illuminate/Collections/Traits/EnumeratesValues.php:242
/var/www/vendor/laravel/dusk/src/Concerns/ProvidesBrowser.php:165
/var/www/vendor/laravel/dusk/src/Concerns/ProvidesBrowser.php:81
/var/www/tests/Browser/MedewerkerContactTest.php:65

Caused by
Facebook\\WebDriver\\Exception\\InvalidSessionIdException: invalid session id

/var/www/vendor/php-webdriver/webdriver/lib/Exception/WebDriverException.php:107
/var/www/vendor/php-webdriver/webdriver/lib/Remote/HttpCommandExecutor.php:372
/var/www/vendor/php-webdriver/webdriver/lib/Remote/RemoteWebDriver.php:585
/var/www/vendor/php-webdriver/webdriver/lib/Remote/RemoteExecuteMethod.php:27
/var/www/vendor/php-webdriver/webdriver/lib/Remote/RemoteTargetLocator.php:35
/var/www/vendor/laravel/dusk/src/Browser.php:295
/var/www/vendor/laravel/dusk/src/Concerns/ProvidesBrowser.php:144
/var/www/vendor/laravel/framework/src/Illuminate/Collections/Traits/EnumeratesValues.php:242
/var/www/vendor/laravel/dusk/src/Concerns/ProvidesBrowser.php:150
/var/www/vendor/laravel/dusk/src/Concerns/ProvidesBrowser.php:71
/var/www/tests/Browser/MedewerkerContactTest.php:65

请帮助我 我使用 laravel 版本 8 并拥有最新的 chrome 驱动程序并使用 php 7 我尝试了很多东西,因为一开始我认为电脑规格有问题,并且由于内存不足而失败,并且我在很多地方都设置了等待功能。

当它工作时,最有可能的失败是它无法登录,我观看了失败png,似乎它忘记删除coockies,所以也可能存在错误 登录是一个自定义功能,如下所示

public function login(Browser $browser, string $role = 'klant_beheerder'): Browser
    {
        $browser->visit($this->url . '/')
            ->assertSee('Inloggen')
            ->type('#email', config('dusk.' . $role . '.login'))
            ->type('#password', config('dusk.' . $role . '.password'))
            ->press('.thm-tran-bg');

            return $browser;
    }

奇怪的是,其他测试确实可以像下面另一个文件中的这个测试一样工作

public function testProfiel(): void
{
    $this->browse(function (Browser $browser) {
        $this->login($browser)
            ->visit($this->url . '/home')
            ->assertSee('e2ebeheerder')
            ->click('#page-header-user-dropdown')
            ->clickLink('Profiel')
            ->assertSee('Profiel van e2ebeheerder')
            ->assertSee('Opslaan')
            ->screenshot('InloggenTest::testProfiel');
    });
}

我尝试了很多方法来解决这个问题,其中大多数都是关于关闭会话并在测试之间删除coockies

laravel testing invalidoperationexception laravel-dusk laravel-dusk2
1个回答
5
投票

我通过在 chromeOptions

 使用 
--disable-dev-shm-usage

解决了所有无效 id

在 Chrome 中,我没有分配足够的资源给我的 Docker 容器。在 Chrome 中添加“--disable-dev-shm-usage”标志修复了该问题。由于它使用本地 /tmp 而不是 /dev/shm,因此它有足够的空间。

© www.soinside.com 2019 - 2024. All rights reserved.