Laravel dusk + docker-compose + selenium + firefox: 未定义索引元素
Laravel dusk + docker-compose + selenium + firefox: Undefined index ELEMENT
我有 docker-合成了 3 张图像 - webserver
、db
和 selenium
。
我启动它然后执行到网络服务器和 运行 php artisan dusk
。
我的应用程序是 returns Welcome
几个 div
的简单 https 页面。
但是我得到了 ErrorException: Undefined index: ELEMENT
.
硒 image: selenium/standalone-firefox
.
test:
...
$this->browse(function (Browser $browser) use ($user) {
$browser
->visit('/home')
->assertSee('Welcome');
});
DuskTestCase.php
...
protected function driver() {
return RemoteWebDriver::create(
'http://selenium:4444/wd/hub', DesiredCapabilities::firefox()->setCapability(
'acceptInsecureCerts', true
)
);
}
这是由于 geckodriver 和 Selenium 之间的不兼容造成的:
https://github.com/facebook/php-webdriver/issues/492
对于 Firefox 和 Selenium,您需要将 enablePassThrough=false
添加到 Selenium 功能中。
类似于:
protected function driver() {
return RemoteWebDriver::create(
'http://selenium:4444/wd/hub', DesiredCapabilities::firefox()
->setCapability('acceptInsecureCerts', true)
->setCapability('enablePassThrough', false)
);
}
应该可以解决问题。
我有 docker-合成了 3 张图像 - webserver
、db
和 selenium
。
我启动它然后执行到网络服务器和 运行 php artisan dusk
。
我的应用程序是 returns Welcome
几个 div
的简单 https 页面。
但是我得到了 ErrorException: Undefined index: ELEMENT
.
硒 image: selenium/standalone-firefox
.
test:
...
$this->browse(function (Browser $browser) use ($user) {
$browser
->visit('/home')
->assertSee('Welcome');
});
DuskTestCase.php
...
protected function driver() {
return RemoteWebDriver::create(
'http://selenium:4444/wd/hub', DesiredCapabilities::firefox()->setCapability(
'acceptInsecureCerts', true
)
);
}
这是由于 geckodriver 和 Selenium 之间的不兼容造成的:
https://github.com/facebook/php-webdriver/issues/492
对于 Firefox 和 Selenium,您需要将 enablePassThrough=false
添加到 Selenium 功能中。
类似于:
protected function driver() {
return RemoteWebDriver::create(
'http://selenium:4444/wd/hub', DesiredCapabilities::firefox()
->setCapability('acceptInsecureCerts', true)
->setCapability('enablePassThrough', false)
);
}
应该可以解决问题。