在iframe中导航后,无法再次获得iframe

时间:2019-02-20 08:58:19

标签: java selenium selenium-webdriver

在我的webdriver测试中,我要切换到iframe并执行客户端导航,然后我想掌握iframe的新网址来执行一些声明:

WebElement iframe = driver.findElements(By.tagName("iframe")).get(0);
driver.switchTo().frame(iframe);

// Click a link and navigate within the iframe.

. . . 

driver.switchTo().defaultContent();

// Try to find the new url of the iframe.
iframe = driver.findElements(By.tagName("iframe")).get(0);
driver.switchTo().frame(iframe);
String appDetailPageUrl = iframe.getAttribute("src");

但是失败了

org.openqa.selenium.StaleElementReferenceException: stale element reference: element is not attached to the page document.

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

当您切换到iframe时,驱动程序上下文已更改为iframe,因此所有先前定位的元素都丢失了,现在已经过时了。

此外,如果src属性是<iframe>元素的一部分,则无法从iframe内部定位它,驱动程序范围从<html>开始里面的标签。

在切换之前获取属性

iframe = driver.findElements(By.tagName("iframe")).get(0);
String appDetailPageUrl = iframe.getAttribute("src");
driver.switchTo().frame(iframe);