所以我尝试使用Selenium导航到IE9中的页面,在加载页面时,表示存在证书错误。使用AutoIT我可以让它在浏览器中单击,然后TAB两次然后按Enter键,没有问题。但是当它继续时,它会抛出一个"模态对话框出现错误"。以下是应该处理IE安全警告错误的方法:
var VueCreator = function (id, endPoint) {
var myVue = new Vue({
el: id,
data: {
videos: []
},
ready: function() {
this.fetchVideos();
},
methods: {
fetchVideos: function() {
this.$http.get(endPoint, function(videos) {
this.videos = videos;
});
}
}
});
return myVue;
}
//pseudo code, assumes videoList is an object that has each unique list with an id and an endpoint
var lists = [];
forEach(videoList, function(obj) {
var tempList = new VueCreate(obj.id, obj.endPoint);
lists.push(tempList);
})
我能在这里做的最好的事情是在"睡眠0.25"打电话是这样做的:
# 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
(除了{ENTER}没有做任何事情,它只会挂起,直到测试超时)
我需要知道如何让Selenium与弹出的对话框进行交互。我知道Selenium并不能很好地处理它们(这就是使用AutoIT的原因)。有什么想法吗?
P.S。这不是我的代码,这个方法是由我的同事创建的
答案 0 :(得分:0)
如果这是IE中显示的典型SSL证书错误警告,那么您可能需要使用JavascriptExecutor来处理它,如本博文中详细描述的那样:
http://automatictester.co.uk/2014/08/03/handling-ssl-certificate-errors-in-selenium/
一般情况下,尽量避免将AutoIT与Selenium混合使用,除非你真的需要。