WebDriver等待iframe,通过其名称的一部分进行识别

时间:2014-02-18 23:59:48

标签: java iframe selenium selenium-webdriver

我在等待iframe并切换到它时遇到问题,因为我只知道它的部分名称。每次加载页面时,名称都是唯一的。模式是“Framexxxxxxx”,其中“xxxxx”是随机数。

有没有办法让webdriver ExpectedConditions.frameToBeAvailableAndSwitchToIt()找到那个iframe?

到目前为止,我已经尝试过:

By.xpath(".//*[starts-with(name(),'Frame')]")
By.xpath("iframe[starts-with(@name,'Frame')]")

以及其他一些方法 - 没有运气。

提前致谢。

3 个答案:

答案 0 :(得分:0)

尝试使用以下定位器

By.xpath("//*[starts-with(@name,'Frame')]")
By.xpath("//iframe[starts-with(@name,'Frame')]")
By.cssSelector("iframe[name*='Frame']")

您可以使用相同的定位器来等待iframe显示/可用。

答案 1 :(得分:0)

使用CssSelector识别iframe ..如果只有一个iframe更好,我认为最好使用它..

driver.switchTo().frame(driver.findElement(By.cssSelector("iframe")));

答案 2 :(得分:-1)

我有一些问题需要等待iframe才能加载,所以我尝试了这个:

WebDriverWait wait = new WebDriverWait(driver, 60);      
wait.until(ExpectedConditions.frameToBeAvailableAndSwitchToIt(By.xpath("//iframe[contains(@name,'Frame')]")));
wait.until(ExpectedConditions.visibilityOfElementLocated(By.tagName("body")));
try {
    Thread.sleep(3000);
} catch (InterruptedException e) {
    e.printStackTrace();
}
  • 等待iframe加载并切换
  • 等待他的身体加载
  • 另外等待3秒以上进行完全渲染