douqiao2008
2016-08-03 14:15
浏览 77
已采纳

Behat-Mink,强制Selenium驱动程序使用Chrome而不是Firefox

So I want to run my tests in Chrome instead of Firefox (because Chrome offers mobile emulation capability) when using Selenium driver with Behat's Mink extension.

I'm running Selenium stand alone on a testing server, and running tests on a local machine.

So after running Behat tests, a Chrome session is created but is not used, instead, another parallel Firefox session also get created and gets used to run the test scenarios.

I tried that also in an environment with graphical display abilities, so a new Chrome window opens but only data;; is displayed in the address bar, then afterwards a Firefox window opens and tests are run there.

I'm running the latest version of Chrome (52.0.2743.82), Selenium standalone server (2.53.1 - Java version) and Chromedriver (2.22.397932)

My behat.yml contains the following:

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"

After looking at Selenium standalone server's logfile, I get the following output:

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}]

As you can see, Chrome session is successfully created, and then a new Firefox session is created afterwards and is used to conduct tests.

  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

3条回答 默认 最新

  • dtkz3186 2016-08-04 10:16
    已采纳

    If the issues is not from the yml setup then you might have some custom code in the FeatureContext class that overrides your desired session and starts a new one.

    已采纳该答案
    打赏 评论
  • dsm42026 2017-02-06 15:25

    You can pass which browser you want to use to selenium standalone server.

    Here you are an example:

    java -jar ./bin/selenium-server-standalone-2.53.1.jar -Dwebdriver.chrome.driver="./bin/chromedriver"
    

    Notice you may be using a different selenenium standalone server (the jar file) and a different Chrome bin path (-Dwebdriver.chrome.driver). Also ensure you have Chrome installed if you are testing your web pages in a headless server.

    打赏 评论
  • doufen3563 2017-04-05 06:32
    java -Dwebdriver.chrome.driver="C:\bin\chromedriver_win32\chromedriver.exe" -jar selenium-server-standalone-3.3.1.jar 
    

    and also change in setup and setUpBeforeClass method

    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/');
        }
    
    打赏 评论

相关推荐 更多相似问题