如何获取框架内嵌套框架的总数

How to get total number of nested frames inside the frame

具有 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”中的总帧数? 提前致谢

要获得嵌套 帧的总数 在父级 <frame> 中,您需要:

  • 为所需的 frameToBeAvailableAndSwitchToIt.
  • 引入 WebDriverWait
  • frames.[=50= 的 visibilityOfAllElementsLocatedBy() 引入 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());
      

参考

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

  • Is it possible to switch to an element in a frame without using driver.switchTo().frame(“frameName”) in Selenium Webdriver Java?