使用 selenium webdriver switchTo() 导航嵌套的未命名 iframe
Navigating nested un-named iframes with selenium webdriver switchTo()
我有一个 .jsp 页面,我试图从中获取 Web 元素并执行点击和输入功能。在尝试在 jsp 页面上识别这些 Web 元素的尝试和错误之后,我注意到该页面包含 "iframes"。我已经查找了资源,以便能够按名称浏览 iframe,并在此处按索引浏览 iframe
https://www.guru99.com/handling-iframes-selenium.html
但是,我觉得我有一个特例,因为我处理的所有 iframe 都没有元素 ID 或名称。此外,我需要导航到的 iframe 嵌套在其他 iframe 中。
因为据我所知,我仅限于使用
switchTo().frame(索引)
由于 none 个 iframe 已命名,我已经尝试过
webDriver.switchTo().frame(索引);
但是因为我正在处理嵌套的 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)中,后者嵌套在(框架 A)中
- 框架A
- ---帧B
- ------帧C
你会尝试这样的事情
driver.switchTo().frame(0)
driver.switchTo().frame(0)
driver.switchTo().frame(0)
为了到达 "Frame C"
我有一个 .jsp 页面,我试图从中获取 Web 元素并执行点击和输入功能。在尝试在 jsp 页面上识别这些 Web 元素的尝试和错误之后,我注意到该页面包含 "iframes"。我已经查找了资源,以便能够按名称浏览 iframe,并在此处按索引浏览 iframe
https://www.guru99.com/handling-iframes-selenium.html
但是,我觉得我有一个特例,因为我处理的所有 iframe 都没有元素 ID 或名称。此外,我需要导航到的 iframe 嵌套在其他 iframe 中。
因为据我所知,我仅限于使用 switchTo().frame(索引)
由于 none 个 iframe 已命名,我已经尝试过 webDriver.switchTo().frame(索引);
但是因为我正在处理嵌套的 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)中,后者嵌套在(框架 A)中
- 框架A
- ---帧B
- ------帧C
你会尝试这样的事情
driver.switchTo().frame(0)
driver.switchTo().frame(0)
driver.switchTo().frame(0)
为了到达 "Frame C"