【发布时间】: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