【问题标题】:Mink + PhantomJS: How do I set the user agent?Mink + PhantomJS:如何设置用户代理?
【发布时间】:2014-08-15 01:09:33
【问题描述】:

我正在使用 phantomjs 和貂皮:

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

但我需要伪装成最新的 chrome。我试过这个:

    /**
     * @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');
    }

但我得到了例外:

[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

chrome 的版本并不重要,但网络应用程序必须认为它正在与最新版本的 chrome 通信。

【问题讨论】:

    标签: selenium phantomjs behat mink


    【解决方案1】:

    Selenium 不提供此功能,因为它不是 用户可以做。建议您使用代理注入额外的 浏览器生成的请求的标头。

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

    很遗憾……但是,PhantomJS 确实提供了一个interface for setting the headers。最好的办法是使用它的 REST API 向它发送直接命令。还有一个很酷的 PHP wrap library 可以让它变得简单 200 倍。

    【讨论】:

      【解决方案2】:

      您应该使用由 Juan Francisco Calderón Zumba 制作的新 Behat/Mink 驱动程序 https://github.com/jcalderonzumba

      这里是驱动https://github.com/jcalderonzumba/MinkPhantomJSDriver的直接链接

      此驱动程序允许您指定所需的请求标头 (它适用于 Behat 3.0,但我认为它至少需要 PHP 5.4)

      【讨论】:

        【解决方案3】:

        您可以通过

        在 selenium2driver 中传递其他设置
        extra_capabilities:
        

        所以在你的情况下:

        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】:

          对于https://github.com/facebook/php-webdriver,您可以使用这种情况:

          $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",
              ];
          

          【讨论】:

            猜你喜欢
            • 2015-04-18
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2017-07-02
            • 1970-01-01
            • 1970-01-01
            • 2013-01-19
            相关资源
            最近更新 更多