在我的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.
有什么想法吗?
答案 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);