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 - 页面更改后找不到元素,即使它是可见的的主要内容,如果未能解决你的问题,请参考以下文章