使用硒webdriver switchTo()

时间:2019-06-22 23:25:19

标签: java selenium selenium-webdriver iframe browser-automation

我有一个.jsp页面,我试图从中获取Web元素并对其执行点击和输入功能。经过尝试并尝试在jsp页面上标识这些Web元素的错误尝试之后,我注意到该页面包含“ iframe”。我查找了能够按名称浏览iframe的资源,还可以按此处通过索引导航iframe

https://www.guru99.com/handling-iframes-selenium.html 

但是,我觉得我有一个特殊情况,因为我要处理的所有iframe都没有元素ID或Name。另外,我需要导航到的iframe嵌套在其他iframe中。

据我所知,我仅限于使用     switchTo()。frame(index)

由于所有iframe均未命名,因此我已经尝试过     webDriver.switchTo()。frame(index);

但是因为我正在处理嵌套的iframe,所以我不确定自己是否会到达需要的位置。我已经尝试过

webDriver.switchTo().frame(0);
webDriver.switchTo().frame(1);
webDriver.switchTo().frame(2);
webDriver.switchTo().frame(3);

查看在发生异常之前可以深入研究的范围。这很困难,因为我也无法识别我当前所在的iframe。也许我需要创建当前iframe的对象,然后以这种方式进行深入研究?

代码看起来像这样……

<iframe height="708px" width="100%" marginheight="0" frameborder="0" scrolling="auto" src="..."></iframe>
...
<iframe height="708px" width="100%" marginheight="0" frameborder="0" scrolling="auto" src="..."></iframe>
...
...<iframe onload="..." height="100%" width="100%" marginheight="0" frameborder="0" scrolling="no" src="..."></iframe>
...
... ...<iframe onload="..." height="100%" width="100%" marginheight="0" frameborder="0" scrolling="YES" src="..."></iframe> 

这是我需要的地方

我希望能够成功地获取要处理的iframe内的Web元素,但是到目前为止,我一直不成功,因为我不确定如何浏览这些iframe。我假设

webDriver.switchTo().frame(index);

是我唯一的选择,因为iframe未命名且没有元素ID。但这就是为什么我在这里。

2 个答案:

答案 0 :(得分:1)

找到了我的问题的答案。

请注意每个iframe都从索引0开始的事实。

因此,如果您嵌套了没有名称或ID的iframe,则类似

(帧C)嵌套在(帧B)中,嵌套在(帧A)

  • 框架A
  • ---框架B
  • ------框架C

您可以尝试这样

    driver.switchTo().frame(0)
    driver.switchTo().frame(0)
    driver.switchTo().frame(0)

以进入“框架C”

答案 1 :(得分:0)

Bro,由于您受到索引号的限制,为什么不与开发团队联系并要求根据要求设置框架名称。我们在类似情况下也做过