如何使用 selenium 网络驱动程序(Sauce Labs)设置自定义用户代理?

How to set a custom user agent using selenium web driver (Sauce Labs)?

我正在 运行通过 Sausage 进行 selenium 测试(它基本上扩展了 phpunit selenium 测试用例以包括 Sauce Labs 的附加功能)。我的问题是我需要 运行 Firefox 上的特定用户代理。

这是我的 firefox 浏览器数组:

        array(
            'browserName' => 'firefox',
            'host'        => 'localhost',
            'port'        => 4444,
            'local'       => true,
            'sessionStrategy' => 'isolated'
            )

获得这个的技巧是创建一个包含用户代理的 firefox 配置文件。然后我们将配置文件作为所需的功能传递给 Web 驱动程序。

以下命令创建一个 firefox 配置文件并对其进行 base64 编码,以便我们可以将其传递给网络驱动程序。

mkdir firefox-profile
cd firefox-profile/
echo 'user_pref("general.useragent.override", "Mozilla/5.0 (iPhone; CPU iPhone OS 6_1_4 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) Version/6.0 Mobile/10B350 Safari/8536.25");' >> prefs.js
zip -r ../firefox-profile.zip *
base64 < ../firefox-profile.zip

使用 base64 编码的 firefox 配置文件的简化代码如下:

      array(
            'browserName' => 'firefox',
            'host'        => 'localhost',
            'port'        => 4444,
            'local'       => true,
            'sessionStrategy' => 'isolated'
            'desiredCapabilities' => array(
                'firefox_profile' => 'UEsDBBQAAAAIAOKTikaRRkklnQAAALQAAAAIABUAcHJlZnMuanNVVAkAAyhPKFUoTyhVVXgEADIE
MwQljMsOgjAURPd+xU1XkJAWxDYmrNSFJthIgq8dKXjRhoaSAi78elF2MydnZuzRFZ3D2iNPbNEp
Q8cJqakM1L7ROf1AEgCR9qONUYzTEDydvWyLCeyyC8wZTjmIIipWYHSDIFX1I3cfNl1n8IZlqgfG
Y0GXArz0cJbHYDb3WDXWhyu6XtuWiele2lIbZFG4jXkIuaqV02z9H3PiJ4svUEsBAhcDFAAAAAgA
4pOKRpFGSSWdAAAAtAAAAAgADQAAAAAAAQAAALSBAAAAAHByZWZzLmpzVVQFAAMoTyhVVXgAAFBL
BQYAAAAAAQABAEMAAADYAAAAAAA='
                )
            )

感谢来自相关主题的 Malvineous 的想法: PHPUnit + Selenium: How to set Firefox about:config options?

作为参考,这是允许的所需功能列表: https://code.google.com/p/selenium/wiki/DesiredCapabilities