gpt4 book ai didi

java - 在 selenium webdriver 中动态切换帧

转载 作者:行者123 更新时间:2023-12-02 10:41:52 25 4
gpt4 key购买 nike

public boolean dynamicSwitchingFrames(WebElement element) {
boolean switchStatus = false;
String parentTag = "";
WebElement targetElement = element;
WebElement parentNode=null;

while (!(switchStatus)) {
parentNode = (WebElement)((JavascriptExecutor) driver).executeScript("return arguments[0].parentNode;", targetElement);
parentTag = parentNode.getTagName();

if (parentTag.equalsIgnoreCase("iframe")) {
driver.switchTo().frame(parentNode);
switchStatus = true;
break;
}
targetElement = parentNode;
}
return switchStatus;
}

我们有一个 Web 应用程序,框架内有很多元素。是否可以创建一个实用程序,接受 Web 元素作为参数并切换到该元素所在的框架。我尝试创建以下实用程序,但没有帮助我想要的是,对于任何网络元素,实用程序应该找到它的框架,并将驱动程序切换到该框架。上面的实用程序给我错误,它无法找到元素(targetElement)。

最佳答案

诀窍是您将无法找到某个元素,除非您切换到该元素所在的框架。如果您已经有一个 WebElement 实例,您很可能知道它的框架,因为您已切换到它来查找元素。

这是我们在项目中处理框架的方式,在我们的自定义驱动程序中内置了以下逻辑。简单来说,它的工作原理如下:

  1. 查找框架/iframe 元素
  2. 将它们添加到列表
  3. 开始在第一帧中查找元素,如果没有找到 - 则转到列表中的下一帧,依此类推。 (实际上有点复杂,因为搜索元素列表可能有不同的策略,例如“首次找到时停止”与“ checkin 所有帧”)

您可以在此处查看代码。如果您不想像我们一样创建自己的驱动程序,您可以提取逻辑并将其添加到您的自定义 findElementInFrames 方法中: https://github.com/WileyLabs/teasy/blob/master/src/main/java/com/wiley/driver/frames/FramesTransparentWebDriver.java

关于java - 在 selenium webdriver 中动态切换帧,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52869434/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com