Behat-Mink,强制 Selenium 驱动程序使用 Chrome 而不是 Firefox
Behat-Mink, force Selenium driver to use Chrome instead of Firefox
因此,当使用带有 Behat 的 Mink 扩展的 Selenium 驱动程序时,我想 运行 在 Chrome 而不是 Firefox 中进行测试(因为 Chrome 提供了移动仿真功能)。
我运行在测试服务器上单独使用 Selenium,运行在本地机器上进行测试。
所以在 运行ning Behat 测试之后,一个 Chrome 会话被创建但没有被使用,相反,另一个并行的 Firefox 会话也被创建并习惯于 运行 测试场景。
我也在具有图形显示能力的环境中尝试过,所以打开了一个新的 Chrome window,但地址栏中只显示了 data;;
,然后是 Firefox window 打开并测试 运行 那里。
我正在 运行安装最新版本的 Chrome (52.0.2743.82)、Selenium 独立服务器(2.53.1 - Java 版本)和 Chrome驱动程序 (2.22.397932)
我的 behat.yml
包含以下内容:
default:
extensions:
Behat\MinkExtension:
browser_name: chrome
base_url: "<url to website>"
default_session: selenium_chrome_session
goutte: ~
sessions:
selenium_chrome_session:
selenium2:
browser: chrome
wd_host: "http://<testing server host>:4444/wd/hub"
capabilities:
extra_capabilities:
chromeOptions:
args:
- "--start-maximized"
- "--test_type"
查看 Selenium 独立服务器的日志文件后,我得到以下输出:
15:44:47.677 INFO [45] org.openqa.selenium.remote.server.DriverServlet - Executing: [new session: Capabilities [{chrome.switches=[--no-sandbox], browser=chrome, name=Behat feature suite, browserName=chrome, chrome.extensions=[], ignoreZoomSetting=false, chromeOptions={args=[--no-sandbox], extensions=[]}, version=, tags=[PHP 5.6.21-1~dotdeb+7.1]}]])
15:44:47.678 INFO [113] org.openqa.selenium.remote.server.DefaultDriverProvider - Creating a new session for Capabilities [{chrome.switches=[--no-sandbox], browser=chrome, name=Behat feature suite, browserName=chrome, chrome.extensions=[], ignoreZoomSetting=false, chromeOptions={args=[--no-sandbox], extensions=[]}, version=, tags=[PHP 5.6.21-1~dotdeb+7.1]}]
15:44:48.021 INFO [45] org.openqa.selenium.remote.server.DriverServlet - Done: [new session: Capabilities [{chrome.switches=[--no-sandbox], browser=chrome, name=Behat feature suite, browserName=chrome, chrome.extensions=[], ignoreZoomSetting=false, chromeOptions={args=[--no-sandbox], extensions=[]}, version=, tags=[PHP 5.6.21-1~dotdeb+7.1]}]]
15:44:48.035 INFO [45] org.openqa.selenium.remote.server.DriverServlet - Executing: [new session: Capabilities [{deviceType=tablet, selenium-version=2.31.0, browserVersion=9, browser=firefox, name=Behat Test, browserName=firefox, deviceOrientation=portrait, version=9, platform=ANY}]])
15:44:48.036 INFO [120] org.openqa.selenium.remote.server.FirefoxDriverProvider - Creating a new session for Capabilities [{deviceType=tablet, selenium-version=2.31.0, browserVersion=9, browser=firefox, name=Behat Test, browserName=firefox, deviceOrientation=portrait, version=9, platform=ANY}]
可以看到,Chromesession创建成功,之后会创建一个新的Firefox session,用于测试
如果问题不是来自 yml 设置,那么您可能在 FeatureContext class 中有一些自定义代码会覆盖您想要的会话并启动一个新会话。
您可以将要使用的浏览器传递给 selenium 独立服务器。
举个例子:
java -jar ./bin/selenium-server-standalone-2.53.1.jar -Dwebdriver.chrome.driver="./bin/chromedriver"
请注意,您可能正在使用不同的 selenium 独立服务器(jar 文件)和不同的 Chrome bin 路径(-Dwebdriver.chrome.driver)。如果要在无头服务器中测试网页,还要确保安装了 Chrome。
java -Dwebdriver.chrome.driver="C:\bin\chromedriver_win32\chromedriver.exe" -jar selenium-server-standalone-3.3.1.jar
并更改设置和 setUpBeforeClass
方法
public static function setUpBeforeClass() {
if (null === self::$mink) {
// $app = require_once('../PATH_TO_YOUR/app.php');
// $app['debug'] = true;
// $app['session.test'] = true;
// $app['exception_handler']->disable();
self::$mink = new Mink(array(
'selenium' => new Session(new Driver\Selenium2Driver('chrome', 'null', "http://google.com/")),
));
self::$mink->setDefaultSessionName('selenium');
}
}
protected function setUp() {
$this->setBrowser('chrome');
$this->setBrowserUrl('http://google.com/');
}
因此,当使用带有 Behat 的 Mink 扩展的 Selenium 驱动程序时,我想 运行 在 Chrome 而不是 Firefox 中进行测试(因为 Chrome 提供了移动仿真功能)。
我运行在测试服务器上单独使用 Selenium,运行在本地机器上进行测试。
所以在 运行ning Behat 测试之后,一个 Chrome 会话被创建但没有被使用,相反,另一个并行的 Firefox 会话也被创建并习惯于 运行 测试场景。
我也在具有图形显示能力的环境中尝试过,所以打开了一个新的 Chrome window,但地址栏中只显示了 data;;
,然后是 Firefox window 打开并测试 运行 那里。
我正在 运行安装最新版本的 Chrome (52.0.2743.82)、Selenium 独立服务器(2.53.1 - Java 版本)和 Chrome驱动程序 (2.22.397932)
我的 behat.yml
包含以下内容:
default:
extensions:
Behat\MinkExtension:
browser_name: chrome
base_url: "<url to website>"
default_session: selenium_chrome_session
goutte: ~
sessions:
selenium_chrome_session:
selenium2:
browser: chrome
wd_host: "http://<testing server host>:4444/wd/hub"
capabilities:
extra_capabilities:
chromeOptions:
args:
- "--start-maximized"
- "--test_type"
查看 Selenium 独立服务器的日志文件后,我得到以下输出:
15:44:47.677 INFO [45] org.openqa.selenium.remote.server.DriverServlet - Executing: [new session: Capabilities [{chrome.switches=[--no-sandbox], browser=chrome, name=Behat feature suite, browserName=chrome, chrome.extensions=[], ignoreZoomSetting=false, chromeOptions={args=[--no-sandbox], extensions=[]}, version=, tags=[PHP 5.6.21-1~dotdeb+7.1]}]])
15:44:47.678 INFO [113] org.openqa.selenium.remote.server.DefaultDriverProvider - Creating a new session for Capabilities [{chrome.switches=[--no-sandbox], browser=chrome, name=Behat feature suite, browserName=chrome, chrome.extensions=[], ignoreZoomSetting=false, chromeOptions={args=[--no-sandbox], extensions=[]}, version=, tags=[PHP 5.6.21-1~dotdeb+7.1]}]
15:44:48.021 INFO [45] org.openqa.selenium.remote.server.DriverServlet - Done: [new session: Capabilities [{chrome.switches=[--no-sandbox], browser=chrome, name=Behat feature suite, browserName=chrome, chrome.extensions=[], ignoreZoomSetting=false, chromeOptions={args=[--no-sandbox], extensions=[]}, version=, tags=[PHP 5.6.21-1~dotdeb+7.1]}]]
15:44:48.035 INFO [45] org.openqa.selenium.remote.server.DriverServlet - Executing: [new session: Capabilities [{deviceType=tablet, selenium-version=2.31.0, browserVersion=9, browser=firefox, name=Behat Test, browserName=firefox, deviceOrientation=portrait, version=9, platform=ANY}]])
15:44:48.036 INFO [120] org.openqa.selenium.remote.server.FirefoxDriverProvider - Creating a new session for Capabilities [{deviceType=tablet, selenium-version=2.31.0, browserVersion=9, browser=firefox, name=Behat Test, browserName=firefox, deviceOrientation=portrait, version=9, platform=ANY}]
可以看到,Chromesession创建成功,之后会创建一个新的Firefox session,用于测试
如果问题不是来自 yml 设置,那么您可能在 FeatureContext class 中有一些自定义代码会覆盖您想要的会话并启动一个新会话。
您可以将要使用的浏览器传递给 selenium 独立服务器。
举个例子:
java -jar ./bin/selenium-server-standalone-2.53.1.jar -Dwebdriver.chrome.driver="./bin/chromedriver"
请注意,您可能正在使用不同的 selenium 独立服务器(jar 文件)和不同的 Chrome bin 路径(-Dwebdriver.chrome.driver)。如果要在无头服务器中测试网页,还要确保安装了 Chrome。
java -Dwebdriver.chrome.driver="C:\bin\chromedriver_win32\chromedriver.exe" -jar selenium-server-standalone-3.3.1.jar
并更改设置和 setUpBeforeClass
方法
public static function setUpBeforeClass() {
if (null === self::$mink) {
// $app = require_once('../PATH_TO_YOUR/app.php');
// $app['debug'] = true;
// $app['session.test'] = true;
// $app['exception_handler']->disable();
self::$mink = new Mink(array(
'selenium' => new Session(new Driver\Selenium2Driver('chrome', 'null', "http://google.com/")),
));
self::$mink->setDefaultSessionName('selenium');
}
}
protected function setUp() {
$this->setBrowser('chrome');
$this->setBrowserUrl('http://google.com/');
}