我正在尝试使用Selenium WebDriver导航页面,并且遇到问题,此页面中最多有3个iframe,但只有一个是“活动”,其他iframe在显示器上设置:none 每当我从一个页面移动到另一个页面时,新页面将被加载到另一个iframe中,但似乎没有模式,所以我无法使用
_driver.findElements(By.tagName("iframe")).get(index);
iframe看起来像这样:
<iframe id="IF0" class="SOMETHING" width="100%" scrolling="no" height="100%" frameborder="0" target="main" src="../myPath/Blank.html" name="IF0" style="position: absolute; border-width: 0px; width: 100%; height: 100%; display: block; z-index: 10;">
<iframe id="IF1" class="SOMETHING" scrolling="no" frameborder="0" name="IF1" style="display: none; position: absolute; width: 100%; height: 100%; overflow: hidden; z-index: -1;">
<iframe id="IF2" class="SOMETHING" scrolling="no" frameborder="0" name="IF2" style="display: none; position: absolute; width: 100%; height: 100%; overflow: hidden; z-index: -1;">
我尝试使用By.xpath之类的
WebDriverWait wait1 = new WebDriverWait(_driver, 60);
wait1.until(ExpectedConditions.frameToBeAvailableAndSwitchToIt(By
.xpath("//*[@target='main']")));
但它不起作用。有没有其他方法可以找出哪个iframe可见而不尝试使用Exceptions逐个加载它们?
答案 0 :(得分:0)
请尝试使用此代码。它将切换到具有&#39;目标属性的 iframe&#39;作为&#39;主要&#39;和&#39;显示属性&#39; as&#39;阻止&#39; :
try{
WebDriverWait wait1 = new WebDriverWait(_driver, 60);
wait1.until(ExpectedConditions.frameToBeAvailableAndSwitchToIt(By.xpath("//iframe[@target='main' and @display='block']")));
}catch(Throwable e){
System.err.println("Error while switching to frame. "+e.getMessage());
}
否则,如果一次只能看到一帧,请尝试以下代码切换到它:
driver.switchTo().frame(0);