关于 javascript:Selenium – 页面更改后即使可见也无法找到元素

Selenium - after page change cannot find element even it is visible

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

等待页面加载后

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

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

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

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

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

为什么我使用 Selenium 得到这个空值?怎么解决?

相关讨论

  • 检查这个。 stackoverflow.com/questions/11736027/…
  • 您是否检查它不在任何框架/iframe 内?
  • 是的,它包含在 iframe 标记中
  • 然后在 driver.switchTo().frame("frame/iframe name/id") 之前使用它..谢谢

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

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

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

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

1
 driver.switchTo().defaultContent()

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

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

1
driver.switchTo().activeElement()

相关讨论

  • 如果对象是模态而不是 iframe 怎么办?
  • 我的模态没有任何标题,如果我按类搜索元素,它似乎会抛出异常
  • 尝试通过提供 html dom 发布一个新问题。

以上是关于 javascript:Selenium – 页面更改后即使可见也无法找到元素的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>