我在等待iframe并切换到它时遇到问题,因为我只知道它的部分名称。每次加载页面时,名称都是唯一的。模式是“Framexxxxxxx”,其中“xxxxx”是随机数。
有没有办法让webdriver ExpectedConditions.frameToBeAvailableAndSwitchToIt()找到那个iframe?
到目前为止,我已经尝试过:
By.xpath(".//*[starts-with(name(),'Frame')]")
By.xpath("iframe[starts-with(@name,'Frame')]")
以及其他一些方法 - 没有运气。
提前致谢。
答案 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();
}