【问题标题】:Selenium WebDriver Java cannot find element in Chrome to scroll toSelenium WebDriver Java 在 Chrome 中找不到要滚动到的元素
【发布时间】:2017-08-01 06:04:28
【问题描述】:

我有一个 Web 应用程序,左侧有一个可滚动菜单。我的代码很简单:

WebElement elementToScrollTo = driver.findElement(By.xpath(locator));
((JavascriptExecutor) driver).executeScript("arguments[0].scrollIntoView();", elementToScrollTo);

定位器是指向我要单击的 Web 元素/菜单项的链接。问题出在 Chrome 中,第一行抛出 NoSuchElementException。所以很明显我不能滚动到一开始就找不到的东西。

然而,奇怪的是在 IE 中一切都运行良好。可以找到该元素并且菜单滚动。之后我使用该元素(即单击它)。

我无法滚动整个浏览器窗口,因为我只需要左侧的菜单面板即可滚动。

我有最新的Chrome (60.0.3112.78 (Official Build) (64-bit))chromedriver 2.30

注意:我实际上已经找到了问题所在。它找不到它的原因是它没有滚动到菜单项的父级,即 2 级元素。所以第二行(滚动)在 Chrome 中没有做任何事情,因此驱动程序不会在 3 级(2 级的子级)上找到菜单项。那么也许滚动在 Chrome 中不起作用?

【问题讨论】:

  • 能否给我完整的代码,让我试试?
  • 请分享完整代码
  • 错误说明了这一切NoSuchElementException,因为不同的浏览器以不同的方式表示HTML DOM。谢谢
  • 源代码很大。通过方法的参数接收到菜单项的链接。请注意,它可以在 IE 中找到。错误如下所示: org.openqa.selenium.NoSuchElementException: no such element: Unable to locate element: {"method":"xpath","selector":"//ul[contains(@style, 'block') ]/li[@class='shell-menu-item-level-3']/div/a[text() = '用户']"}

标签: java google-chrome selenium webdriver


【解决方案1】:

frame 中的 HTML 元素可能有问题。要处理此类元素,您需要先切换帧。

你能试试这个命令吗: driver.switchTo().frame()

另外,如果上述方法不起作用,请尝试使用implicitWait。也许,您的元素需要时间来加载,因此 Web 驱动程序无法找到它。

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

【讨论】:

    猜你喜欢
    • 2016-04-17
    • 2017-07-17
    • 2017-01-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-11
    • 2016-12-28
    相关资源
    最近更新 更多