【问题标题】:How to Manage non-JS popups in Selenium?如何在 Selenium 中管理非 JS 弹出窗口?
【发布时间】:2017-07-24 00:17:21
【问题描述】:

我目前正在测试一个网站,我遇到的问题之一是使用非 Javascript 弹出窗口。

我尝试过使用 Selenium 警报界面。

我所做的示例

Alert a = WebDriver.switchTo().alert()
alert.accept()
alert.dismiss()

这似乎适用于 Javascript 弹出警报,但不适用于非 javascript 弹出警报。有什么方法可以处理不基于 Javascript 的 Selenium 弹出窗口?

【问题讨论】:

  • 如果可能的话,提供相关页面的 URL 会有所帮助。
  • 对不起,它是管理事务的一部分,所以我不能提供 URL。我只是想知道 Selenium 是否有办法处理不基于 Javascript 的弹出窗口?
  • 这取决于它是哪种弹出窗口。它是基于 HTML 的吗?我们必须查看屏幕截图并需要更多信息。
  • @Jay 是什么弹出窗口?如果它是html 的一部分,您可以像访问任何其他webelement 一样访问它
  • 我相信它是 HTML 的一部分。因此,我遵循的基本操作流程是单击一个按钮,然后尝试访问出现的弹出窗口。在单击按钮之前,弹出窗口是不可见的,我对如何访问它有点困惑。

标签: javascript html selenium dom


【解决方案1】:

上次我遇到这样的弹出窗口时,它是一个原本“不可见”的框架。使用您喜欢的浏览器打开页面,在弹出窗口中突出显示某些内容,右键单击它并选择 Inspect Element,然后按照其 XPath 进行操作。您可能需要在 Selenium 中切换几次帧才能到达您需要的位置。

【讨论】:

  • 谢谢,我试试这个!
【解决方案2】:

如果它的 HTML 弹出窗口则不需要做任何特定的事情,只需像正常网页一样正常定位所需的元素。

但是如果没有找到它的说元素,那么可能有两种情况:

  1. 弹出窗口存在于 iframe 中
  2. 在此弹出窗口之前,您位于 iframe 中,但该弹出窗口出现在 defaultContent 视图中。

根据情况,使用以下解决方案:

对于#1 : driver.switchTo().frame(0); //这里0表示第一个iframe,你也可以使用iframe id

对于#2:driver.switchTo().defaultContent();

【讨论】:

    猜你喜欢
    • 2020-06-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多