java - 在 iframe 内导航后无法再次获取 iframe

标签 java selenium selenium-webdriver

在我的 webdriver 测试中,我切换到 iframe 并执行客户端导航,然后我想获取 iframe 的新 url 来执行一些断言:

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.

有什么想法吗?

最佳答案

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

此外,如果 src属性是 <iframe> 的一部分您无法从 iframe 内部找到它,驱动程序范围从 <html> 开始里面有标签。

取开关前的属性

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

关于java - 在 iframe 内导航后无法再次获取 iframe,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54782339/

相关文章:

java - 动态(以编程方式)创建 View 时, View 在卡片 View 中重叠

java - 如何将用户输入从 EditText 保存到要在不同 Activity 上使用的变量

java - 如何将导致异常的方法的错误消息传递给监听器中的 onTestFailure 方法

java - 如何在 Google map 中查找多边形的中心纬度(Android、Java)

Java SQLException : Result Set closed issue

java - 单选按钮的 @FindBy 注释

c# - 使用selenium时可以更改数据库吗?

ruby-on-rails - 如何使用 Rails 3 Rspec 和 Capybara 访问 Selenium 2 的默认 webdriver?

node.js - 从GitHub安装时不显示Appium版本,但通过nodejs cmd安装时显示。我们应该以两种方式安装吗?

java - 使用 tomcat 设置的 jenkins 运行 selenium 测试时浏览器不可见