在使用Java的Internet Explorer中,是否有一个明确的Selenium解决方案用于模态弹出对话框?

Osc*_*r R 6 java selenium

我已经搜索了很多很多地方来解决我的问题,但还没有找到它.我认为,到目前为止,Selenium将提供一个直接而简单的解决方案,使用Java从Internet Explorer处理模态窗口/对话框.

我正在测试的Web应用程序具有以下特征:

  • 它仅受Internet Explorer支持(没有办法解决此问题)
  • 主页接受用户标识和密码,并带有"登录"按钮
  • 登录和页面加载后,会弹出一个"欢迎 - 新功能"窗口,其中包含"不再显示此内容"复选框和"确定"按钮以关闭窗口.
  • 在我关闭弹出窗口之前,我无法对父窗口执行任何操作
  • 在弹出窗口中禁用右键单击(但是,我可以通过在登录和窗口弹出之前打开F12工具来查看源代码)

这就是我尝试过的:

  • getWindowHandles()始终为父窗口返回1,因此这driver.switchTo(handle)不适用
  • 它不是警报,所以driver.switchTo().alert()accept()不起作用
  • findElement(By whatever) 在弹出窗口中找不到任何元素(如"确定"按钮或复选框等)
  • Robot class是我见过的唯一的工作,我可以发送按键导航到"OK"按钮并单击它以关闭窗口...

这是我的问题:

  • 由于存在"不再显示此内容"的复选框,因此有用户将显示此模式弹出窗口,而某些用户不会显示该窗口.我需要考虑这两种情况
  • 我需要找到一种100%确定的方法来了解是否显示弹出窗口.如果我有这些信息,我可以使用Robot类(虽然"脏")在需要时对弹出窗口执行操作
  • 我试图找出是否使用了父窗口元素isEnabled(),但即使在显示模态弹出窗口时项目不是手动"可点击",也isEnabled()总是返回TRUE - 所以这不起作用 - 是否有更好的方法检查后台中"被阻止"元素的这个?

我的问题:

  • 你如何检查是否存在一个不会100%显示的模态弹出窗口?(在Internet Explorer 10上,使用Selenium和Java)
  • 除了使用Robot类之外,如何在模态弹出对话框中与实际元素进行交互(例如,动态单选按钮并不总是向用户显示相同的选项)?

谢谢.

phi*_*o.O 0

根据布尔变量创建 If 语句,以检查是否存在未 100% 显示的模式弹出窗口。

如果模态是 html 生成的(它应该是,如果它包含动态内容),那么尝试:

driver.switchTo().activeElement();

driver.switchTo().defaultContent();

另外,您可能需要插入一个等待,以便 html 有时间生成。

如果模式是浏览器警报,请尝试:

警报.accept();