Ruby 在Selenium网格环境中使用Watir WebDriver绕过证书错误

Ruby 在Selenium网格环境中使用Watir WebDriver绕过证书错误,ruby,ssl,internet-explorer-8,watir-webdriver,selenium-grid,Ruby,Ssl,Internet Explorer 8,Watir Webdriver,Selenium Grid,我已经设置了一个网格环境,有4个Windows(IE8、IE9、IE10、IE11)虚拟机和一个带有Chrome和Firefox的Ubuntu12.04虚拟机 Selenium网格和节点的版本为2.41.0 至于ruby,我使用的是rvm,使用的是ruby 2.1.2p95(2014-05-08修订版45877)[x86_64-linux] 我在CentOs虚拟机上驾驶考试。现在,当我尝试运行IE8测试时,我看到远程windows机器启动IE8,但首先在浏览器中收到一条消息: “这是WebDri

我已经设置了一个网格环境,有4个Windows(IE8、IE9、IE10、IE11)虚拟机和一个带有Chrome和Firefox的Ubuntu12.04虚拟机

Selenium网格和节点的版本为2.41.0 至于ruby,我使用的是rvm,使用的是ruby 2.1.2p95(2014-05-08修订版45877)[x86_64-linux]

我在CentOs虚拟机上驾驶考试。现在,当我尝试运行IE8测试时,我看到远程windows机器启动IE8,但首先在浏览器中收到一条消息:

“这是WebDriver服务器的初始起始页。”

后来我又看到了另一个带有证书警告的页面

证书错误:导航被阻止 错误: 此网站提供的安全证书不是由受信任的证书颁发机构颁发的。 安全证书问题可能表示有人试图欺骗您或截获您发送到服务器的任何数据

我试图通过注册表黑客使IE8中的所有4个安全级别相等 HKEY\ U当前\用户\软件\ Microsoft\Windows\CurrentVersion\Internet设置\区域 HKEY\U本地\U计算机\Software\Microsoft\Windows\CurrentVersion\Internet设置\Zones

并使所有区域中0x2500位置的值相等

但似乎不起作用。 这里有没有关于ruby/watir webdriver的有效解决方案的想法

这是基类

#!/usr/bin/env ruby -W0
require "rubygems"
require "test/unit"
require 'rspec'
require 'watir-webdriver'
require 'headless'
require 'mysql2'
require_relative 'lib/basic_ops'
require_relative 'data/data'
require_relative 'main_class'

include  GC
caps = Selenium::WebDriver::Remote::Capabilities.ie
caps.version = "8"
caps[:name] = "IE 8 on win7 , port 5560"

    BROWSER = Watir::Browser.new(
    :remote,
    :url => "http://selenium-hub-vm:4444/wd/hub",
    :desired_capabilities => caps)

URL = "https://target-vm/"
BROWSER.window.resize_to(950, 750)
BROWSER.window.move_to(0, 0)

main_class

因此main_class.rb是所有浏览器交互的位置。

我所做的是添加证书,但没有删除证书错误,因此我使用:

@browser.link(:id, "overridelink").click
紧接着

@browser.goto("https://<URL>/")
@browser.goto(“https://”)

您可以使用javascript通过安全证书颁发。我以前从未用Ruby编写过代码,所以语法可能有点错误

Python代码:

driver.get("javascript:document.getElementById('overridelink').click()")
Ruby尝试:

driver.execute_script("document.getElementById('overridelink').click()")
driver.get "javascript:document.getElementById('overridelink').click()"
driver.get("javascript:document.getElementById('overridelink').click()");
您可能也希望在if语句中使用此选项,以便检查所需的条件

i.e.  if "Certificate Error" in driver.find_element_by_xpath("//title").text
如果我的建议都不起作用,那么在以下方面也有类似的解决方案

希望这是有帮助的或接近你需要的

i.e.  if "Certificate Error" in driver.find_element_by_xpath("//title").text