Selenium - 页面更改后找不到元素,即使它是可见的

时间:2017-12-22 10:06:57

标签: javascript java selenium webdriver

我正在使用Selenium和java,点击一个按钮后我落在另一个页面上,我看到了我在视口中看到的输入标签

等待页面加载

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

为了获取标签我使用scrollIntoView()并使用javascript以这种方式在id中搜索元素:

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

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

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

为什么我使用Selenium获取此null?如何解决?

1 个答案:

答案 0 :(得分:1)

请在scrollIntoView()代码

之前使用以下代码
  driver.switchTo().frame(driver.findElement(By.tagName("iframe")));

如果任何元素位于iframe标记下,则应使用上面的

将驱动程序切换为iframe

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

 driver.switchTo().defaultContent()

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

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

driver.switchTo().activeElement()