【问题标题】:Selenium : How to know current frame number or value?Selenium:如何知道当前的帧数或值?
【发布时间】:2014-09-30 09:49:05
【问题描述】:
我正在处理一个有一些弹出窗口的页面。我想在所有弹出窗口上测试所有 HTML 元素的可用性。所以要知道当前帧号。是否有任何可用的方法,如Selenium.getFrameNumber() 或其他方法,以便我可以使用
切换到所需的帧
Selenium.switchTo().frame(0); or Selenium.switchTo().defaultContent();
【问题讨论】:
标签:
java
testing
selenium
selenium-webdriver
frame
【解决方案1】:
没有可用的默认选项,但您可以通过不同的方式获得它,
在页面中存储 iframe 列表,
List<WebElement> myIframes= driver.findElements(By.tagName("iframe"));
您可以通过其 id 迭代以到达所需的帧。
你可以得到总数。帧数,
myIframes.size();
【解决方案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。