Mink + Phantomjs:如何设置用户代理?[英] Mink + PhantomJS: How do I set the user agent?

问题描述

我正在使用mink使用phantomjs:

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

但我需要伪装成最新的铬.我已经尝试过:

    /**
     * @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的版本并不重要,但Web应用程序必须思考它与最近版本的Chrome交谈.

推荐答案

selenium不提供这种能力,因为它不是一个 用户可以做到.建议您使用代理注入额外的代理 标题到浏览器生成的请求.

https://code.google.com/p//硒/问题/细节?ID = 2047#C1

悲伤地......但是,Phantomjs确实提供了一个接口,用于设置标题.您最好的镜头将是使用它的REST API发送直接命令.还有一个很酷的php 包装库它会使它更容易.

其他推荐答案

您应该使用由Juan FranciscoCalderónZumba制造的新Behat/Mink驱动程序 https://github.com/jcalderonzumba

这是一个直接链接到司机 https://github.com/jcalderonzumba/minkphantomjsdriver

此驱动程序允许您指定所需的请求头 (它与behat 3.0合作,但我认为它需要至少php 5.4)

其他推荐答案

您可以通过

传递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"

本文地址:https://www.itbaoku.cn/post/1740084.html