【问题标题】:How to set different UserAgents in Cypress programmatically如何以编程方式在 Cypress 中设置不同的 UserAgent
【发布时间】:2021-04-18 20:56:15
【问题描述】:

我有一个在不同的移动/平板电脑浏览器中运行 cypress 测试的用例。我确实通过配置文件阅读了有关在 cypress 中设置 userAgent 的信息:https://docs.cypress.io/guides/references/configuration.html#Options,但这将在配置文件中设置。

我正在寻找通过 CLI 或运行时设置 UserAgent 的方法...这意味着我想为不同的 userAgent 运行相同的测试。有人研究过这个用例吗?在这种情况下我们如何设置 userAgent?

谢谢, 萨希思

【问题讨论】:

    标签: mobile browser cypress ui-automation user-agent


    【解决方案1】:

    您可以使用cypress_ 覆盖cypress.json 文件中的现有配置值。你可以看这里cypress docs

    例如,如果您已经在 cypress.json 文件中设置了 userAgent,但为了执行测试,您需要不同的 userAgent,则执行以下命令:

    cypress_userAgent="value" npx cypress run
    

    【讨论】:

      【解决方案2】:

      Overriding Options - Command Line

      从命令行运行 Cypress 时,您可以传递 --config 标志

      对于命令行使用

      cypress open --config userAgent="Mozilla/5.0 (Macintosh; Intel Mac OS X x.y; rv:42.0) Gecko/20100101 Firefox/42.0"
      

      对于 package.json 用法(注意字符串中的转义双引号)

      "scripts: {
        ...
        "cy:ua-moz": "cypress open --config userAgent=\"Mozilla/5.0 (Macintosh; Intel Mac OS X x.y; rv:42.0) Gecko/20100101 Firefox/42.0\""
      

      在设置/配置下的赛普拉斯运行器中检查它 - 它被标记为“从 CLI 参数设置”颜色。


      或在测试中以编程方式,Cypress.config()

      Is there a programmatic way to change user agent in Cypress

      const userAgents = {
        "Firefox": "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:47.0) Gecko/20100101 Firefox/47.0",
        "Opera": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.106 Safari/537.36 OPR/38.0.2220.41",
        "Safari": "Mozilla/5.0 (iPhone; CPU iPhone OS 13_5_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.1.1 Mobile/15E148 Safari/604.1"
      }
      
      userAgents.forEach(ua => {
      
        Cypress.config('userAgent', userAgents[ua]); // set outside of test
                                                     // see caveat below
      
        it(`Test with user agent ${ua}`, () => {
          // test here
        }
      }
      

      尽管有些迹象表明此方法存在问题
      Not all config values can be changed at all times

      在运行测试时无法更改某些配置值。任何不受赛普拉斯直接控制的东西(例如超时、userAgent 或环境变量)都将在运行时被忽略。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-06-19
        • 1970-01-01
        • 1970-01-01
        • 2011-12-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-04-13
        相关资源
        最近更新 更多