Mink + PhantomJS: How do I set the user agent?

梦想的初衷 提交于 2019-12-11 03:06:35

问题


I am using phantomjs with mink:

default:
  extensions:
    Behat\MinkExtension\Extension:
      goutte: ~
      selenium2:
        browser: phantomjs
        wd_host: http://localhost:8643/wd/hub
        capabilities:
           webStorageEnabled: true

But I need to masquerade as the latest chrome. I have tried this:

    /**
     * @BeforeStep
     */
    public function masqueradeAsLatestChrome(StepEvent $event)
    {
        $this->getSession()->setRequestHeader('User-Agent', 'Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/37.0.2049.0 Safari/537.36');
    }

But I get the exception:

[Behat\Mink\Exception\UnsupportedDriverActionException]                                                
Exception has been thrown in "beforeStep" hook, defined in FeatureContext::masqueradeAsLatestChrome()  
Request header is not supported by Behat\Mink\Driver\Selenium2Driver

The version of chrome isn't critical but the web application must think its talking to a very recent version of chrome.


回答1:


Selenium does not provide this capability, as it is not something a user can do. It's recommended you use a proxy to inject additional headers to the requests generated by the browser.

https://code.google.com/p/selenium/issues/detail?id=2047#c1

Sadly… However, the PhantomJS does provide an interface for setting the headers. Your best shot would be to send a direct command to it using it's REST API. There's also a cool PHP wrap library that would make it 200 times easier.




回答2:


You should use the new Behat/Mink driver made by Juan Francisco Calderón Zumba https://github.com/jcalderonzumba

Here is a direct link to the driver https://github.com/jcalderonzumba/MinkPhantomJSDriver

This driver allows you to specify the request headers that you need (It works with Behat 3.0 but I think it requires at least PHP 5.4)




回答3:


you can pass additional settings in selenium2driver via

extra_capabilities:

so in your case:

default:
  extensions:
    Behat\MinkExtension\Extension:
      goutte: ~
      selenium2:
        browser: phantomjs
        wd_host: http://localhost:8643/wd/hub
        capabilities:
           webStorageEnabled: true
           extra_capabilities:
             phantomjs.page.settings.userAgent: "Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/37.0.2049.0 Safari/537.36"



回答4:


For https://github.com/facebook/php-webdriver you can use this case:

$capabilities = [
            WebDriverCapabilityType::BROWSER_NAME => 'phantomjs',
            WebDriverCapabilityType::PLATFORM => 'ANY',
            WebDriverCapabilityType::ACCEPT_SSL_CERTS => false,
            WebDriverCapabilityType::JAVASCRIPT_ENABLED => true,
            'phantomjs.page.settings.userAgent' => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.135 Safari/537.36 Edge/12.246",
    ];


来源:https://stackoverflow.com/questions/25319882/mink-phantomjs-how-do-i-set-the-user-agent

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!