IE11浏览器中无法点击对话框取消按钮及元素排查问题求助
解决IE11中无法操作消息对话框的问题
我之前也帮不少人处理过IE11里这类对话框搞不定的情况,你说的常规WebDriver alert切换、AutoIT都没效果,Sikuli能行但想要其他方案,那试试下面这几个思路:
方案1:调整IE浏览器的安全设置
IE的安全限制经常是这类问题的元凶,你可以试试改这些设置:
- 打开IE的Internet选项 → 切到安全标签页
- 把你访问的站点所在区域(比如Internet或者本地Intranet)的安全级别调到中低
- 确保所有区域的启用保护模式状态一致(要么全勾,要么全不勾)
- 重启IE之后,再用
driver.switchTo().alert().dismiss()试试,说不定就能正常识别对话框了
方案2:给IE Driver加特殊配置参数
初始化IE Driver的时候,加上几个关键的Capabilities,能提升对对话框的支持:
DesiredCapabilities caps = DesiredCapabilities.internetExplorer(); // 开启原生事件,让Driver更好地识别IE的系统对话框 caps.setCapability(InternetExplorerDriver.NATIVE_EVENTS, true); // 忽略保护模式和缩放设置的限制(如果改安全设置不方便的话) caps.setCapability(InternetExplorerDriver.IGNORE_ZOOM_SETTING, true); caps.setCapability(InternetExplorerDriver.INTRODUCE_FLAKINESS_BY_IGNORING_SECURITY_DOMAINS, true); WebDriver driver = new InternetExplorerDriver(caps);
配置完再调用alert的dismiss方法,很多时候原生事件开启后,Driver就能正常接管对话框了。
方案3:用JS提前“接管”对话框
如果这个对话框是页面里的JavaScript触发的,那可以在页面加载完成后,重写浏览器的alert/confirm方法,直接自动处理掉:
// 页面加载完成后执行这段JS driver.executeScript("window.alert = function() {}; window.confirm = function() { return false; };");
这样alert会被直接屏蔽,confirm对话框会自动返回false(对应点击取消按钮),从根源上避免对话框弹出后无法操作的问题。
方案4:用Robot类模拟键盘操作
要是上面的方法都不行,还可以试试用Java的Robot类模拟按键,比如按ESC关闭对话框,或者Alt+C触发取消按钮:
// 确保焦点在IE窗口上 driver.switchTo().window(driver.getWindowHandle()); // 创建Robot实例 Robot robot = new Robot(); // 模拟按ESC键关闭对话框 robot.keyPress(KeyEvent.VK_ESCAPE); robot.keyRelease(KeyEvent.VK_ESCAPE);
注意用Robot的时候,得保证IE窗口在前台,不然按键可能没效果哦。
内容的提问来源于stack exchange,提问作者qsg testing
相关产品推荐
相关产品推荐

