Reputation: 437
I'm running Dusk to test my Laravel application. I've recently switched to Laradock which took some time to set it all up as I have little experience with Docker, but it all seems to be working now. Except that Selenium doesn't seem to be working as it should.
I start and open my workspace like this:
sudo docker-compose up -d nginx postgres beanstalkd selenium
sudo docker-compose exec --user=laradock workspace bash
and then
php artisan dusk
1) Tests\Browser\SuccessLoginTest::test_user_can_login
Facebook\WebDriver\Exception\NoSuchElementException: no such element: Unable to locate element: {"method":"css selector","selector":"body textarea[name='email']"}
(Session info: headless chrome=75.0.3770.90)
For documentation on this error, please visit: https://www.seleniumhq.org/exceptions/no_such_element.html
Build info: version: '3.141.59', revision: 'e82be7d358', time: '2018-11-14T08:25:53'
System info: host: 'f8c1169cd1a3', ip: '172.18.0.3', os.name: 'Linux', os.arch: 'amd64', os.version: '5.4.7-100.fc30.x86_64', java.version: '1.8.0_212'
Driver info: driver.version: unknown
I get a screenshot of the failing test showing the websiteand on it the and element it can't seem to find. Before I switched to Laradock everything was working properly, so the problems seems to be with Selenium. My setup looks like this and I use Laravel 5.7.28
protected function driver()
{
$options = new ChromeOptions();
$options->addArguments([
'--headless',
'--no-sandbox',
'--disable-gpu',
'--window-size=1920,1080',
'--ignore-certificate-errors'
]);
$capabilities = DesiredCapabilities::chrome();
$capabilities->setCapability(ChromeOptions::CAPABILITY, $options);
if (env('USE_SELENIUM', 'false') == 'true') {
return RemoteWebDriver::create(
'http://selenium:4444/wd/hub', $capabilities
);
} else {
return RemoteWebDriver::create(
'http://localhost:9515', $capabilities
);
}
Upvotes: 2
Views: 1188
Reputation: 193108
This error message...
Facebook\WebDriver\Exception\NoSuchElementException: no such element: Unable to locate element: {"method":"css selector","selector":"body textarea[name='email']"}
(Session info: headless chrome=75.0.3770.90)
For documentation on this error, please visit: https://www.seleniumhq.org/exceptions/no_such_element.html
Build info: version: '3.141.59', revision: 'e82be7d358', time: '2018-11-14T08:25:53'
System info: host: 'f8c1169cd1a3', ip: '172.18.0.3', os.name: 'Linux', os.arch: 'amd64', os.version: '5.4.7-100.fc30.x86_64', java.version: '1.8.0_212'
Driver info: driver.version: unknown
...implies that the NoSuchElementException was raised during your program execution.
A bit of details about your Test Configuration interms of chromedriver version would have helped us to debug your issue in a better way. However you need to take care of a couple of things:
The purpose of the argument --disable-gpu
was to enable google-chrome-headless on windows platform. It was needed as SwiftShader fails an assert on Windows in headless mode earlier. This issue was resolved through Headless: make --disable-gpu flag unnecessary. As you are on laravel / laravel-dusk / laradock on linux, you need to remove the line of code:
'--disable-gpu' // applicable to windows os only
As per your question as you are using chrome=75.0. you need to ensure:
@Test
as non-root user.driver.quit()
within tearDown(){}
method to close & destroy the WebDriver and Web Client instances gracefully.You can find a relevant detailed discussion in:
Upvotes: 1