PHP - Chrome Webdriver - Browserstack \\在我的yml中设置自定义HTTP浏览器标题的正确变量是什么?

时间:2017-09-07 11:25:15

标签: codeception browserstack

我正在尝试使用自定义HTTP UserAgent标头字符串来绕过我们网站上的验证码。它可以手动正常工作,我试图让它与我的自动化测试一起工作。我使用Codeception框架在PHP中编写它们。正如您在下面看到的,我尝试将变量添加到我的配置yml中,用于browserstack-sierra-safari。 "头" "用户代理&#34 ;.我尝试将此代码添加到win7-chrome以及env中。我还尝试了变量browserstack.useragent和browserstack.user-agent。我的配置文件在下面。

class_name:AcceptanceTester

    modules:
      enabled:
        - WebDriver
        - Helper\Acceptance
        - Helper\CaptchaSolver
        - Asserts

      config:
        WebDriver:
          url: '**********************'
          browser: chrome



    env:
      prod:
          modules:
            config:
               WebDriver:
                  url: '**********************'
      test:
          modules:
            config:
               WebDriver:
                  url: '************************'

      dev:
          modules:
            config:
               WebDriver:
                  url: '********************'
      browserstack-win7-chrome:
            modules:
              config:
                 WebDriver:
                    host: '**************************'
                    port: 80
                    browser: chrome
                    capabilities:
                     browserstack.user: 'a******'
                     browserstack.key: '******************'
                     browserstack.console: 'verbose'
                     browserstack.idleTimeout: 300
                     acceptSslCerts: true
                     os: Windows
                     os_version: 7
                     browserstack.local: true
                     browserstack.debug: true

      browserstack-sierra-safari:
          modules:
            config:
               WebDriver:
                  host: '******************@hub.browserstack.com'
                  port: 80
                  browser: edge
                  capabilities:
                   os: Windows
                   os_version: 7
                   browserstack.local: true
                   browserstack.debug: true
                   browserstack.acceptSslCerts: true


        headers:

 Accept:'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8'
            Accept-Language: 'zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3'
            User-Agent: 'Mozilla/5.0 (Windows NT 10.0; WOW64)' 

AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36'
      browserstack-win10-edge:
            modules:
              config:
                 WebDriver:
                    host: '****************@hub.browserstack.com'
                    port: 80
                    browser: Edge
                    capabilities:
                     os: Windows
                     os_version: 10
                     browserstack.local: true
                     browserstack.debug: true

是否有人在自动化测试中通过browserstack成功发送了HTTP标头?如果是,那么使用了什么变量?

1 个答案:

答案 0 :(得分:0)

理想情况下,我建议您在实例化浏览器时覆盖useragent。

例如,如果您正在使用chrome并且测试是在java中实现的,则下面的代码应该有所帮助:

ChromeOptions options = new ChromeOptions();
options.addArguments("--user-agent=Mozilla/5.0 (Linux; Android 6.0; HTC One M9 Build/MRA58K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.98 Mobile Safari/537.36");
driver = new ChromeDriver(options);

在类似的行上,在browserstack上实现它时,您可以使用以下代码行进行webdriver调用

DesiredCapabilities capabilities = DesiredCapabilities.chrome();
ChromeOptions options = new ChromeOptions();
options.addArguments("--user-agent=Mozilla/5.0 (Linux; Android 6.0; HTC One M9 Build/MRA58K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.98 Mobile Safari/537.36");
capabilities.setCapability(ChromeOptions.CAPABILITY, options);
driver = new RemoteWebDriver(new URL(“https://" + <BROWSERSTACK_USERNAME> + ":" + <BROWSERSTACK_KEY> + "@hub-cloud.browserstack.com/wd/hub”), capabilities);

不确定Browserstack是否具有名为browserstack.useragent或browserstack.user-agent的任何功能