我想通过使用Selenium来检查网页上是否存在框架,怎么做呢

问题描述 投票:0回答:1

登录我的应用程序后,有时会打开一个框架,这需要单击“确定”按钮。所以,我编写了下面的代码切换到框架,单击确定按钮并再次切换到默认值。

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'循环或任何其他方法检查框架是否存在?

谢谢。

java selenium-webdriver frame
1个回答
0
投票

在那里,我不得不在过去对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();

我希望有所帮助

© www.soinside.com 2019 - 2024. All rights reserved.