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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Selenium - 页面更改后找不到元素,即使它是可见的相关的知识,希望对你有一定的参考价值。

我使用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?怎么解决?

答案

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

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

如果任何元素位于iframe标记下,则应使用上面的方法将驱动程序切换为iframe

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

 driver.switchTo().defaultContent()

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

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

要么

driver.switchTo().activeElement()

以上是关于Selenium - 页面更改后找不到元素,即使它是可见的的主要内容,如果未能解决你的问题,请参考以下文章

selenium怎么判断元素的值

selenium+Python页面元素定位问题

Selenium webdriver在页面更改后获取元素

Python+Selenium元素定位不到的问题及解决办法

selenium 找不到元素 (显式等待 和隐式等待的区别)

selenium IDE 如何定位页面变动元素