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

问题描述 投票:2回答:1

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

javascript java selenium webdriver
1个回答
1
投票

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

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

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

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

 driver.switchTo().defaultContent()

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

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

要么

driver.switchTo().activeElement()
© www.soinside.com 2019 - 2024. All rights reserved.