Selenium WebDriver Java在Chrome中找不到要滚动到的元素
我有一个Web应用程序,左侧有一个可滚动的菜单。我的代码非常简单:
WebElement elementToScrollTo = driver.findElement(By.xpath(locator));
((JavascriptExecutor) driver).executeScript("arguments[0].scrollIntoView();", elementToScrollTo);
locator是指向我要单击的web元素/菜单项的链接。问题是在Chrome中,第一行抛出了一个NoSuchElementException
。所以很明显,我不能滚动到一开始找不到的东西
然而,奇怪的是,在IE中,一切都很完美。可以找到元素并滚动菜单。之后,我使用元素(即单击它)
我无法滚动整个浏览器窗口,因为我只需要左侧的菜单面板来滚动
我有最新的Chrome (60.0.3112.78 (Official Build) (64-bit))
和chromedriver 2.30
注意:我已经解决了这个问题。它找不到它的原因是,它没有滚动到菜单项的父级,即level 2元素。因此,第二行(滚动)在Chrome中没有任何功能,因此驱动程序无法在3级(2级的子级)上找到菜单项。所以也许在Chrome中滚动不起作用
# 1 楼答案
位于
frame
中的HTML元素可能有问题。要处理这些元素,首先需要切换帧你能试试这个命令吗
driver.switchTo().frame()
此外,如果上面的方法不起作用,尝试使用
implicitWait
。也许,您的元素加载需要时间,因此web驱动程序无法找到它driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);