为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

holdtom 2021-09-12 20:25:59
登录到我的应用程序后,有时会打开一个框架,这需要单击“确定”按钮。因此,我编写了下面的代码,用于切换到框架,单击“确定”按钮并再次切换到默认值。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”循环或任何其他方法检查框架是否存在?
查看完整描述

2 回答

?
萧十郎

TA贡献1815条经验 获得超13个赞

过去我也不得不做一些关于 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();


查看完整回答
反对 回复 2021-09-12
  • 2 回答
  • 0 关注
  • 185 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信