1

Frame_top 的 3 个嵌套帧的快照:

带有 3 个嵌套框架的 Frame_top

代码:

WebElement topframe = driver.findElement(By.xpath("//frame[@name='frame-top']"));   
String frame1 =  driver.switchTo().frame(topframe).switchTo().frame("frame-left").findElement(By.xpath("//body")).getText();                
System.out.println(frame1);
List<WebElement> nestedFrames = driver.switchTo().frame(topframe).findElements(By.tagName("frame"));
System.out.println(nestedFrames.size());

在顶部,您可以看到此页面在框架(frame_top)内有嵌套框架。
使用第 1-3 行,我可以获得每个嵌套框架的文本。但是我无法获得“Frame_top”内的帧数。(第 4-5 行)。
如何获得“frame_top”内的总帧数?提前致谢

4

1 回答 1

1

要获取父级中嵌套框架的总数,<frame>您需要:

  • 为所需的frameToBeAvailableAndSwitchToIt诱导WebDriverWait
  • framevisibilityOfAllElementsLocatedBy()引入WebDriverWait 。
  • 您可以使用以下任一定位器策略
    • 使用cssSelectortagName

      new WebDriverWait(driver, 10).until(ExpectedConditions.frameToBeAvailableAndSwitchToIt(By.cssSelector("frame[name='frame-top']")));
      System.out.println(new WebDriverWait(driver, 10).until(ExpectedConditions.visibilityOfAllElementsLocatedBy(By.tagName("frame"))).size());
      
    • 使用xpathtagName

      new WebDriverWait(driver, 10).until(ExpectedConditions.frameToBeAvailableAndSwitchToIt(By.xpath("//frame[@name='frame-top']")));
      System.out.println(new WebDriverWait(driver, 10).until(ExpectedConditions.visibilityOfAllElementsLocatedBy(By.tagName("frame"))).size());
      

参考

您可以在以下位置找到一些相关的讨论:

于 2020-07-05T17:48:48.897 回答