2017-08-01 130 views
0

我有一個Web應用程序,在左側有一個可滾動菜單。我的代碼很簡單:Selenium WebDriver Java在Chrome中找不到元素以滾動到

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

定位器是我想單擊的網頁元素/菜單項的鏈接。問題出在Chrome上,第一行輸出NoSuchElementException。所以很顯然,我不能滾動到一開始就找不到的東西。

但是,有什麼奇怪的是,在IE中,一切都很完美。元素可以被找到並且菜單滾動。之後我使用該元素(即點擊它)。

我無法滾動整個瀏覽器窗口,因爲我只需要左側的菜單面板滾動。

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

注:我已經找到了問題。它無法找到它的原因是因爲它不滾動到菜單項的父級,即2級元素。所以第二行(滾動)在Chrome中不做任何事情,因此,驅動程序將無法在級別3上找到菜單項(級別2的子項)。所以也許滾動不適用於Chrome?

+0

你能給我完整的代碼,這樣我就可以試試嗎? –

+0

請分享完整代碼 –

+0

錯誤表示所有'NoSuchElementException'因爲不同的瀏覽器不同地表示HTML DOM。謝謝 – DebanjanB

回答

0

這可能是位於frame內的HTML元素的問題。要處理這些元素,您需要先切換幀。

你可以試試這個命令: driver.switchTo().frame()

另外,儘量使用implicitWait如果上述一個不能正常工作。也許,你的元素需要花費時間來加載,因此Web驅動程序無法找到它。

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

相關問題