让 WebDriver 与 Firefox 一起工作

Getting WebDriver working with Firefox

在 Vagrant 中使用 Laravel 5+。

我有硒运行宁使用:

java -jar vendor/se/selenium-server-standalone/bin/selenium-server-standalone.jar -Dwebdriver.firefox.bin="/usr/bin/firefox"

使用无头显示:

sudo Xvfb :10 -ac

然而当我 运行 codeception:

 ./vendor/bin/codecept run selenium --steps

我收到以下错误:

[Facebook\WebDriver\Exception\UnknownServerException] Unable to connect to host 127.0.0.1 on port 7055 after 45000 ms. Firefox console output: Error: GDK_BACKEND does not match available displays

我对应该使用的服务器和端口感到困惑。 目前我通过 http://localhost:8000 访问网站 但是那是在流浪者之外。

我观察$url = 'http://localhost:4444/wd/hub',里面api\vendor\facebook\webdriver\lib\Remote\RemoteWebDriver.php

作为错误输出:

127.0.0.1 on port 7055.

实际上,当您 运行 selenium-server-standalone.jar 时,您应该下载最新的 geckodriver from here 并使用从系统下载的壁虎驱动程序路径设置 属性 Dwebdriver.gecko.driver ,如下所示:

java -jar vendor/se/selenium-server-standalone/bin/selenium-server-standalone.jar -Dwebdriver.firefox.bin="/usr/bin/firefox" -Dwebdriver.gecko.driver = "path/to/downloaded geckodriver 

注意 :就像其他浏览器供应商 Selenium 提供的其他驱动程序一样,Mozilla 发布了一个可执行文件 geckodriver 运行 以及最新的 firefox 浏览器。如需更多信息,您应该 follow this link.

现在您需要在 api\vendor\facebook\webdriver\lib\Remote\RemoteWebDriver.php 中初始化 RemoteWebDriver 期间将 marionette 的功能设置为 true 为:

$capabilities->setCapability('marionette', true);

完整示例代码:

$host = 'http://localhost:4444/wd/hub';
$capabilities = DesiredCapabilities::firefox();
$capabilities->setCapability('marionette', true);
$driver = RemoteWebDriver::create($host, $capabilities, 5000);

切换到 chrome 网络驱动程序,不那么复杂,更兼容,对我来说工作得很好。

  1. 下载chrome webdriver 或 composer require
  2. 设置环境

    nohup sudo Xvfb :10 -ac &

    导出显示=:10

    java -jar vendor/se/selenium-server-standalone/bin/selenium-server-standalone.jar -Dwebdriver.chrome.bin="/usr/bin/google-chrome" -Dwebdriver.chrome.driver="vendor/bin/chromedriver"