我有一个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中可能不起作用吗?
答案 0 :(得分:0)
位于frame
内的HTML元素可能存在问题。要处理这些元素,您需要先切换帧。
你可以尝试这个命令:
driver.switchTo().frame()
另外,如果上述方法不起作用,请尝试使用implicitWait
。也许,您的元素需要时间来加载,因此Web驱动程序无法找到它。
driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);