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();
添加回答
举报