Selenium:如何知道当前的帧数或值?

时间:2014-08-07 08:28:54

标签: java testing selenium selenium-webdriver frame

我正在制作一个有一些弹出窗口的页面。我想测试所有弹出窗口上的所有HTML元素可用性。所以要知道当前帧号。有没有像Selenium.getFrameNumber()这样的方法可以使用

切换到所需的帧
Selenium.switchTo().frame(0);   or Selenium.switchTo().defaultContent();

2 个答案:

答案 0 :(得分:3)

没有可用的默认选项,但您可以通过不同方式获得此选项,

将iframe列表存储在页面中

List<WebElement> myIframes= driver.findElements(By.tagName("iframe"));

并且您可以迭代以使用其ID获取所需的帧。

你可以获得总数。框架,

myIframes.size();

答案 1 :(得分:2)

在我制作的一个项目中,我使用了一个ArrayList来跟踪窗口。

List<String> windowList = new ArrayList<String>();
windowList.add( driver.getWindowHandle() );

初始窗口始终填充列表中的第一个条目,永远不会更改。

后续窗口会添加到列表的END中,如下所示:

driver.clickButtonToOpenPopup();
windowList.add( driver.getWindowHandle() );

然后,当一个弹出窗口(或窗口)或标签关闭时,我按顺序递减列表,而不是打开窗口。

  pos = windowList.size();
  if ( pos > 1 && driver.closeCurrentWindow() && windowList.remove() ) {
        log.info( "Closed window at position #" + pos );
  } else {
     log.info("There was a problem closing the window.");
  }

你可以做很多不同的方式。

如果我再次这样做,我可以使用ArrayDeque class