java - 使用 selenium webdriver switchTo() 导航嵌套的未命名 iframe

标签 java selenium selenium-webdriver iframe browser-automation

我有一个 .jsp 页面,我试图从中获取 Web 元素并在其上执行单击和输入功能。经过反复试验尝试识别 jsp 页面上的这些 Web 元素,我注意到该页面包含“iframe”。我查找了资源,以便能够按名称导航 iframe,并在此处按索引导航 iframe

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

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

因为据我所知,我仅限于使用 switchTo().frame(索引)

由于没有命名 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。但这就是我来这里的原因。

最佳答案

找到了我的问题的答案。

请注意,每个 iframe 都从索引 0 开始。

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

(框架 C)嵌套在(框架 B)中,而(框架 B)又嵌套在(框架 A)中

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

你会尝试这样的事情

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

为了到达“C 框”

关于java - 使用 selenium webdriver switchTo() 导航嵌套的未命名 iframe,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56719898/

相关文章:

java - -XX :+PrintTenuringDistribution doesn't print size per age

java - 多线程后无法获得正确的执行时间

java - @CacheLookup 在 WebDriver 中如何工作?

java - 如何通过 Selenium-WebDriver 正确查找元素以用于输入目的

selenium - 如何等到Vue处理完成?

java - Mockito 从本地方法内部模拟对象

java - Tomcat 内存泄漏(一些旧的 war 已经在内存中)

java - 动态创建TestNG.xml文件并传递参数

java - 加载配置文件时,Selenium 测试需要几分钟才能启动

selenium - 如何根据切换开关的状态进行点击?