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

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


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


holdtom
浏览 186回答 2
2回答

萧十郎

过去我也不得不做一些关于 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 framedriver.switchTo().defaultContent();
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java