1

目前我有一个问题 - 我想从当前帧切换到父帧。应用程序有很多内部框架,因此不能使用 driver.switchTo().defaultContent()。在此讨论中,建议了可能的解决方案 - 您应该记住您访问过的所有帧,并使用从顶部迭代它们

driver.switchTo().defaultContent()

主要问题在于,在我的应用程序中,有时我被迫使用切换到由 xpath 和其他定位器定位的帧 - 使用 WebElement 切换。并且正如上面讨论中已经提到的那样,在切换所有定位的 WebElement 后,它变得无效,不能用于切换。所以我应该有办法再次在框架内找到这个元素。虽然我可以找到执行某些 js 调用(即)的该框架元素的索引(WebElement)executeScript("window.frames[i]").equals(myWebElement),但事实并非如此,因为当从页面中删除某些框架时,索引可能会发生变化。我可以尝试查找框架名称和 ID,但可能未指定它们。

因此,我看到了唯一可能的解决方案 - 将某些属性设置为当前选择的父级框架 - 示例属性为活动且值为 true。此外,我应该能够对所有可以切换帧的方法执行此操作(存在 3 个)。在所有方法中,我都可以接收表示框架的 WebElement,但据我所知,要更改属性值,您应该执行一些 js 代码。所以问题是如何在js中定位当前的WebElement。

感谢您阅读这一切。

4

2 回答 2

2

看看上面的代码片段。这是在 Js 中定位当前元素的最佳方式,将元素作为参数传递以执行脚本并在 js 中使用参数 [0] 引用它

WebElement element = driver.findElement(By.id("foo"));
String contents = (String)((JavascriptExecutor)driver).executeScript("return arguments[0].innerHTML;", element); 
于 2012-10-02T14:25:06.860 回答
0

您必须使用 javascript 实现自定义逻辑

如果元素具有 id,那么您可以使用 javascript 中可用的 findElementById() 方法,否则使用 findElementsByName() 然后遍历数组并匹配其他属性以缩小到您的元素

于 2012-09-30T20:31:17.193 回答