javascript - Selenium - 页面更改后即使元素可见也找不到元素

标签 javascript java selenium webdriver

我正在使用 Selenium 和 java,单击一个按钮后我会进入另一页,并看到我正在视口(viewport)中查看的输入标签

等待页面加载后

driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);

为了获取标签,我使用 scrollIntoView()并使用 java 中的 javascript 通过 id 搜索元素:

js.executeScript("document.getElementById('elementId').scrollIntoView(true);");

但问题是 document.getElementById('elementId') 返回 null;我也在 firefox webdriver 控制台中尝试过,结果相同。

如果我使用 Firefox 控制台在同一页面上执行 document.getElementById('elementId') 但不使用 Selenium Webdriver,我会按预期获得标记。

为什么我使用 Selenium 得到这个 null ?如何解决?

最佳答案

请在scrollIntoView()代码之前使用以下代码

  driver.switchTo().frame(driver.findElement(By.tagName("iframe")));

如果任何元素驻留在 iframe 标记下,您应该使用上面的方法将驱动程序切换到 iframe

如果您需要在默认模式下切换驱动程序,那么您需要使用以下代码

 driver.switchTo().defaultContent()

如果元素处于模态状态,则使用它

driver.switchTo().frame("ModelFrameTitle");

driver.switchTo().activeElement()

关于javascript - Selenium - 页面更改后即使元素可见也找不到元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47939583/

相关文章:

java - Maven - 在执行过程中故障安全崩溃时生成报告

javascript - Bootstrap 中的完全可点击 Accordion

javascript - polymer 铁-ajax : How to Bind data from input element to iron-ajax's body attribute

javascript - this.moveTo 在谷歌浏览器中不起作用

java - 为什么 postRotate() 方法改变 X 轴方向

javascript - 无法使用 Protractor 获取输入中的值

javascript - 如何在 AppleScript 中执行 JavaScript 函数?

java - Hamcrest hasItem 和 Mockito 验证不一致

java - JOGL:如何更改现有 GLCanvas 的 GLCapability?

java - 当页面左右滚动时,如何在 Selenium 中捕获整个屏幕