如何使用 Selenium / Nightwatch.js / Browserstack 摆脱 IE 安全对话框

How to get rid of IE security dialog with Selenium / Nightwatch.js / Browserstack

当 运行ning 在 browserstack 中针对 IE 进行测试时,IE 似乎出现了一条安全异常消息:

这是因为正在调用的后端 api 使用的是不受信任的自签名证书(CI 需要像这样,因为 api每次 CI 创建后端时都有不同的 url)

此自动测试 运行 需要发生的事情是对话需要被接受(或根本不出现)——但我看不到通过 nightwatch 框架执行此操作的任何方式。

我尝试过使用 browser.setValue('button', [browser.Keys.LEFT_ARROW]); 单击向左箭头 并尝试单击具有 'Yes' 值的按钮,但似乎没有任何效果。

我还在我的 ie 配置文件设置中设置了 acceptSslCerts:

    "ci_ie": {
      "launch_url" : "http://hub.browserstack.com",
      "selenium_port"  : 80,
      "selenium_host"  : "hub.browserstack.com",
      "silent": true,
      "screenshots" : {
        "enabled" : false,
        "path" : ""
      },
      "desiredCapabilities": {
        "browserName": "ie",
        "javascriptEnabled": true,
        "acceptSslCerts": true,
        "ignoreProtectedModeSettings": true,
        "browser_version": "10",
        "os_version": "7",
        "os": "windows"
      }
    }

任何有关如何解决此问题的想法都将不胜感激。

正确,您无法通过 selenium webdriver 控制此弹出窗口,它不在 scope/reach 范围内。

相反,您需要首先阻止它显示:

  • How to deal with certificates using Selenium?

In case of IE,您应该将 acceptSslCerts 所需的能力设置为 "true":

"desiredCapabilities" : {
  "browserName" : "internet explorer",
  "javascriptEnabled" : true,
  "acceptSslCerts" : true,
}

您可能还需要将 ignoreProtectedModeSettings 设置为 "true":

"desiredCapabilities" : {
  "browserName" : "internet explorer",
  "javascriptEnabled" : true,
  "acceptSslCerts" : true,
  "ignoreProtectedModeSettings": true
}

还有 this workaround(您可能需要将 acceptSslCerts 设置为 "false" 才能生效)。

我通过添加解决了这个问题:

"unexpectedAlertBehaviour": "accept"

到我的守夜人配置中的 desiredCapabilities 部分。

我想这可能是因为 acceptSslCerts XHR 请求被忽略了。