与Selenium的模态对话窗口

所以我试图使用Selenium导航到IE9中的页面,在加载页面时,表示存在证书错误。 使用AutoIT我可以让它在浏览器中单击,然后TAB两次然后按Enter键,没有问题。 但是当它继续时,它会抛出“modal dialog存在错误”。 这是应该处理IE安全警告错误的方法:

# Handle IE Security Warning errors. class Selenium::WebDriver::Navigation def to(url) @bridge.get url if @bridge.getTitle.match(/Certificate Error.*/) Thread.new do sleep 0.75 security_warning = 'Security Warning' if @auto_it.WinActive(security_warning) @auto_it.ControlClick(security_warning, "Yes", '[CLASS:Button; INSTANCE:2]' ) end auto_it = WIN32OLE.new("AutoItX3.Control") auto_it.WinWait('[CLASS:IEFrame]','', 90) x = auto_it.WinGetPosX('[CLASS:IEFrame]') y = auto_it.WinGetPosY('[CLASS:IEFrame]') auto_it.MouseClick("left", x + 100, y + 200, 1, 0) auto_it.Send "{TAB 2}{ENTER}" sleep 0.25 wait.until { @bridge.executeScript("return document.readyState;") == "complete" } end end end 

我能在这里做的最好的就是“睡眠0.25”调用是这样做的:

 auto_it.Send "{TAB}{ENTER}" 

(除了{ENTER}没有做任何事情,它只是挂起,直到测试超时)

我需要知道如何让Selenium与弹出的对话框进行交互。 我知道Selenium不能很好地处理它们(这就是使用AutoIT的原因)。 有任何想法吗?

PS这不是我的代码,这个方法是我的同事创建的

如果这是IE中显示的典型SSL证书错误警告,那么您可能希望使用JavascriptExecutor来处理它,如本博客文章中详细描述的:

http://automatictester.co.uk/2014/08/03/handling-ssl-certificate-errors-in-selenium/

一般情况下,尽量避免将AutoIT与Selenium混合使用,除非你真的需要。