登录我的应用程序后,有时会打开一个框架,这需要单击“确定”按钮。所以,我编写了下面的代码切换到框架,单击确定按钮并再次切换到默认值。
driver.switchTo().frame(driver.findElement(By.id("InlineDialog_Iframe")));
driver.findElement(By.id(prop.getProperty("pending_email_close_btn_id"))).click();
driver.switchTo().defaultContent();
但是,如果框架没有出现,那么代码会给出错误,说框架不存在。
请让我知道如何使用'if'循环或任何其他方法检查框架是否存在?
谢谢。
在那里,我不得不在过去对iframe的问题做一些事情,这对我来说也很困惑,
因此,您需要了解的第一个内容是iframe实际上是一个“在其他网页内”的网页,因此您需要switchTo().frame(...stuff..)
才能做某事
比你完成时需要得到初始帧driver.switchTo().defaultContent();
所以你从一页移动到另一页
在iframe中找到你追求的元素我建议你找到任何总会存在的元素并试一试
我还建议你创建一个类来保存你的代码并等待JS,Angular,Jquery ......
我的代码示例:
try {
driver.switchTo().frame(driver.findElement(By.cssSelector("iframe[id^='xdm_default']")));//change focus to iframe
wait.until(ExpectedConditions.visibilityOf(driver.findElement(By.tagName("html"))));//wait for html in the iframe
WebElement divCardsGrid = wait.until(ExpectedConditions.visibilityOf(driver.findElement(By.cssSelector("div[class^='CardsGrid']"))));
if (!divCardsGrid.findElements(By.tagName("a")).isEmpty()) {//check for external links
} catch (WebDriverException e) {
log.error(e.getMessage());
}
//change the focus to the initial frame
driver.switchTo().defaultContent();
我希望有所帮助