首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Watir测试中处理Chrome客户端证书

在Watir测试中处理Chrome客户端证书
EN

Stack Overflow用户
提问于 2015-12-02 14:19:54
回答 2查看 862关注 0票数 0

我有一个基于客户端证书身份验证的应用程序,我一直试图实现自动化。通过选择不同的证书,用户可以获得不同的应用程序权限。其思想是使用基于watir-webdriver的脚本和rautomation gem并登录到应用程序中。在Chrome浏览器中,它看起来很像这样:

其基本思想如下:

代码语言:javascript
复制
require 'watir-webdriver'
require 'rautomation'

b = Watir::Browser.new :chrome  
b.goto 'https://example.com' 

# Get the Chrome window
window = RAutomation::Window.new(:title => /Chrome/i)
# Select client certificate     
window.send_keys :return

但是,当脚本执行并到达b.goto 'https://example.com'时,它会被卡住,因为在选择证书之前不会加载页面。60秒后,这将导致客户端超时,我将得到一个Net::ReadTimeout异常。因此,无法达到证书选择的代码。

我通过捕获Net::ReadTimeout异常来解决这个问题:

代码语言:javascript
复制
begin
 b.goto 'https://example.com' 
rescue      
  window = RAutomation::Window.new(:title => /Chrome/i)   
  window.send_keys :return
end

这个解决方案远远不是最优的,因为脚本必须等待60秒才能开始执行。可以使用以下代码将超时降低到合理的等待时间:

代码语言:javascript
复制
client = Selenium::WebDriver::Remote::Http::Default.new
client.timeout = 5 # seconds – default is 60
b = Watir::Browser.new :chrome, :http_client => client

但是对于剩下的5秒的脚本来说,client.timeout太低了。

我认为问题出在goto上,所以我尝试了其他方法,但它们的行为方式似乎都是一样的:

代码语言:javascript
复制
b.driver.navigate.to 'https://example.com' # => Net::ReadTimeout
b.execute_script('window.location.href = "https://example.com"') # => Net::ReadTimeout

有人能为我提供优化建议或其他处理上述客户端证书的最佳方法吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-12-15 21:43:25

Thread不帮你吗?不确定是否会,因为它依赖于Ruby的GIL (全局解释器锁)和底层Webdriver,但是您可以尝试一下。

这些方面的东西可以起作用(未经测试):

代码语言:javascript
复制
t = Thread.start { b.goto }

# Not sure if getting handle works or not, but if it does
# then it should be a better way to locate the browser window
window = RAutomation::Window.new(:hwnd => b.window.handle)

# Wait until client certificate window exists
RAutomation::WaitHelper.wait_until { window.windows.any? { |w| w.text =~ /Select a certificate/ }}

# Select client certificate     
window.send_keys :return

# Wait for the page load to finish
t.join
票数 3
EN

Stack Overflow用户

发布于 2015-12-02 15:02:59

Watir只在浏览器呈现的页面上工作。尝试完全忽略证书。http://watirwebdriver.com/browser-certificates/

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34045044

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档