Javascript 如何在Selenium中管理非JS弹出窗口?
我目前正在测试一个站点,我遇到的问题之一是使用非Javascript弹出窗口 我尝试过使用Selenium警报界面 我所做工作的样本Javascript 如何在Selenium中管理非JS弹出窗口?,javascript,html,selenium,dom,Javascript,Html,Selenium,Dom,我目前正在测试一个站点,我遇到的问题之一是使用非Javascript弹出窗口 我尝试过使用Selenium警报界面 我所做工作的样本 Alert a = WebDriver.switchTo().alert() alert.accept() alert.dismiss() 这似乎适用于Javascript弹出警报,但不适用于非Javascript弹出警报。有没有办法用Selenium处理不基于Javascript的弹出窗口?上次我遇到这样的弹出窗口时,它是一个本来“不可见”的框架。用您最喜欢的
Alert a = WebDriver.switchTo().alert()
alert.accept()
alert.dismiss()
这似乎适用于Javascript弹出警报,但不适用于非Javascript弹出警报。有没有办法用Selenium处理不基于Javascript的弹出窗口?上次我遇到这样的弹出窗口时,它是一个本来“不可见”的框架。用您最喜欢的浏览器打开页面,突出显示弹出窗口中的某个内容,右键单击它并选择Inspect元素,然后按照其XPath进行操作。您可能需要在Selenium中切换几次帧才能到达您需要的位置。上次我遇到这样的弹出窗口时,它是一个以其他方式“不可见”的帧。使用您最喜欢的浏览器打开页面,突出显示弹出窗口中的某个内容,右键单击它并选择Inspect元素,然后跟随其XPath。您可能需要在Selenium中切换几次帧才能到达所需的位置。如果它的HTML弹出窗口不需要执行任何特定操作,只需像在普通网页中一样正常定位所需元素即可 但如果未找到其所述元素,则可能有2种情况:
driver.switchTo().frame(0)代码>//这里0表示第一个iframe,您也可以使用iframe id
对于#2:driver.switchTo().defaultContent()代码>如果它的HTML弹出窗口不需要做任何特定的事情,只需正常定位所需的元素,就像您对普通网页所做的一样
但如果未找到其所述元素,则可能有2种情况:
弹出窗口出现在iframe中
在此弹出窗口之前,您在iframe中,但该弹出窗口出现在defaultContent视图中
根据具体情况,使用以下解决方案:
对于#1:driver.switchTo().frame(0)代码>//这里0表示第一个iframe,您也可以使用iframe id
对于#2:driver.switchTo().defaultContent()代码>如果可能的话,提供相关页面的URL会有所帮助。很抱歉,这是管理员的一部分,所以我无法提供URL。我只是想知道Selenium是否有办法处理不基于Javascript的弹出窗口?这取决于它是什么类型的弹出窗口。它是基于HTML的吗?我们必须看到屏幕截图并需要更多信息。@Jay这是什么样的弹出窗口?如果它是html
的一部分,您可以像任何其他webelement
一样访问它,我相信它是html的一部分。因此,我遵循的基本操作流程是单击按钮,然后尝试访问出现的弹出窗口。在单击按钮之前,弹出窗口不可见,我对如何访问它感到有点困惑。如果可能的话,提供相关页面的URL会有所帮助。很抱歉,这是管理员的一部分,因此我无法提供URL。我只是想知道Selenium是否有办法处理不基于Javascript的弹出窗口?这取决于它是什么类型的弹出窗口。它是基于HTML的吗?我们必须看到屏幕截图并需要更多信息。@Jay这是什么样的弹出窗口?如果它是html
的一部分,您可以像任何其他webelement
一样访问它,我相信它是html的一部分。因此,我遵循的基本操作流程是单击按钮,然后尝试访问出现的弹出窗口。在点击按钮之前,弹出窗口是不可见的,我对如何访问它有点困惑。谢谢,我会试试这个!谢谢,我试试这个!