在Selenium中,找出webelement是否在Window或iframe中

时间:2017-06-22 18:13:19

标签: javascript selenium iframe xpath selenium-webdriver

在selenium中,当我登陆网页或打开网页时,我使用driver.switchTo.activeElement()来查找网页上哪个元素(Say元素textbox2)正在接收20个元素中的焦点(比如textbox1,textbox2,radio1,radio2,chkbox1,chkbox2,label1,label2等等)我登陆页面的那一刻。所以我们可以说当我登陆页面时,默认焦点是某个元素(比如textbox2)。

如何以编程方式查找是在窗口还是框架中?当然,我可以通过Firebug进行检查,然后手动查看是否在Window或iframe中,但我不想进行手动检查,而是通过使用一些Selenium方法或Javascript函数以编程方式获取它。 我们在Selenium或Javascript中有类似getXpath()方法的东西来提取元素的Xpath吗?任何其他方式知道是否通过Xpath知道元素是否在Window或iframe(框架)?

3 个答案:

答案 0 :(得分:0)

您可以根据切换时间来判断您是使用根DOM还是使用框架DOM。

当您启动Selenium时,除非您明确调用switchTo.frame()

,否则您将始终处于上下文“root DOM”之下

因此,你可以

  

查看webelement是否在窗口或iframe中

通过您的代码。

问问你自己:

  • 我使用过switchTo.frame()吗?

如果是这样;你的元素在iframe / frame中。

如果不是;你的元素在“Window”(根DOM)

脚注: 除{/ 1}}以前WebElement 之外,<iframe>调用无法从findElement()内返回switchTo.frame()

答案 1 :(得分:0)

我可以从您的问题中理解,您想知道元素是在iframe内还是在窗口中。

在窗口中,您可以参考浏览器的主窗口或通过点击链接或类似内容打开的外部窗口?

也许您可以识别标识 id 标记的元素,并获取 URI 元件

document.getElementsByTagName("a")[0].baseURI;

document.getElementsByClassName("w3-btn w3-white w3-border")[0].baseURI

了解每个iframe与URL的路径不同非常重要。

iframe中的元素具有iframe的URI,它与URL的URI不同。

现在你只是比较URI是否与URL不同然后是iframe,如果不是,那么就在主窗口内。

答案 2 :(得分:0)

Selenium不知道何时切换到框架或窗口。在您的代码中,如果您已明确提到switchTo.frame();,则只会访问框架DOM,否则默认情况下它是根DOM。