Selenium WebDriver Java无法在Chrome中找到要滚​​动的元素

时间:2017-08-01 06:04:29

标签: java google-chrome selenium webdriver

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

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

locator是我要点击的网页元素/菜单项的链接。问题出在Chrome中,第一行抛出NoSuchElementException。所以显然我不能滚动到一开始就找不到的东西。

然而,奇怪的是,在IE中一切都很完美。可以找到元素并滚动菜单。之后我使用元素(即点击它)。

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

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

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

1 个答案:

答案 0 :(得分:0)

位于frame内的HTML元素可能存在问题。要处理这些元素,您需要先切换帧。

你可以尝试这个命令: driver.switchTo().frame()

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

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