Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/437.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在Selenium中管理非JS弹出窗口?_Javascript_Html_Selenium_Dom - Fatal编程技术网

Javascript 如何在Selenium中管理非JS弹出窗口?

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的弹出窗口?上次我遇到这样的弹出窗口时,它是一个本来“不可见”的框架。用您最喜欢的

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

我尝试过使用Selenium警报界面

我所做工作的样本

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

这似乎适用于Javascript弹出警报,但不适用于非Javascript弹出警报。有没有办法用Selenium处理不基于Javascript的弹出窗口?

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

上次我遇到这样的弹出窗口时,它是一个以其他方式“不可见”的帧。使用您最喜欢的浏览器打开页面,突出显示弹出窗口中的某个内容,右键单击它并选择Inspect元素,然后跟随其XPath。您可能需要在Selenium中切换几次帧才能到达所需的位置。

如果它的HTML弹出窗口不需要执行任何特定操作,只需像在普通网页中一样正常定位所需元素即可

但如果未找到其所述元素,则可能有2种情况:

  • 弹出窗口出现在iframe中
  • 在此弹出窗口之前,您在iframe中,但该弹出窗口出现在defaultContent视图中
  • 根据具体情况,使用以下解决方案:

    对于#1:
    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的一部分。因此,我遵循的基本操作流程是单击按钮,然后尝试访问出现的弹出窗口。在点击按钮之前,弹出窗口是不可见的,我对如何访问它有点困惑。谢谢,我会试试这个!谢谢,我试试这个!