代码之家  ›  专栏  ›  技术社区  ›  eeadev

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

  •  2
  • eeadev  · 技术社区  · 7 年前

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

    等待加载页面后

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

    为了得到标签,我使用 scrollIntoView() 并在java中使用javascript按id搜索元素,方法如下:

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

    但问题是这份文件。getElementById('elementId')返回null;我在firefox webdriver控制台上也尝试了同样的结果。

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

    为什么我要使用Selenium获取此空值?如何修复它?

    1 回复  |  直到 7 年前
        1
  •  3
  •   Mahmud Riad    7 年前

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

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

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

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

     driver.switchTo().defaultContent()
    

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

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

    driver.switchTo().activeElement()