2017-04-21 74 views
1

如何使用Selenium Webdriver在Firefox上處理嵌套滾動條?我試圖自動化的功能是在向下滾動整個框架時,下一個按鈕被啓用。我試過JavaScript執行程序,但它滾動主頁,而不是在div內。我也嘗試過使用操作,請參閱下面我的代碼:在網頁上滾動div而不滾動Selenium Webdriver中的主頁

WebElement snapshot_list = driver.findElement(By.id("snapshots-list")); 
Actions scrolldown = new Actions(driver); 

scrolldown.moveToElement(snapshot_list).build().perform(); 
snapshot_list.click(); 

scrolldown.keyDown(Keys.CONTROL).sendKeys(Keys.END).perform(); 

它沒有任何錯誤造成的,隨着時間的流逝TestNG中,但它只是跳過scrolldown.keyDown部分出現在測試用例。我究竟做錯了什麼?任何幫助將不勝感激。

+0

爲什麼你需要'scrolldown.keyDown(Keys.CONTROL).sendKeys(Keys.END).perform(); '一部分? – kushal

回答

0

你已經提到你嘗試過Javascript執行程序,但是不知道你嘗試了什麼。如果您已經在下面嘗試過,請忽略它們。

(((JavascriptExecutor)driver)).executeScript("document.getElementById('snapshots-list').scrollIntoView({ 
    behavior: 'smooth' 
});"); 

(((JavascriptExecutor)driver)).executeScript("document.getElementById('snapshots-list').scrollIntoView(true);"); 

(((JavascriptExecutor)driver)).executeScript("jQuery(\"snapshots-list\").mouseover();"); 

或低於

WebElement snapshot_list = driver.findElement(By.id("snapshots-list")); 
Actions scrolldown = new Actions(driver); 

scrolldown.moveToElement(snapshot_list).click().build().perform(); 
+0

謝謝!我通過Actions進行了一些調整,並且工作。 –

0

問題解決了所提到移動元素後,立即點擊!我實現它通過操作,我關注的元素結構框架和while循環中添加以下條件:

Actions action = new Actions(driver); 
action.moveToElement(FirstSnapshot).build().perform(); 
FirstSnapshot.click(); 

while(Nextbutton.isEnabled()== false) 
     { 
     action.keyDown(Keys.CONTROL).sendKeys(Keys.DOWN).perform(); 
     } 
System.out.println("Button is enabled"); 
1

下面的代碼爲我工作滾動div-

WebElement eleAssistanceInput = driver.findElement(By.id("abc")); 
//the above element will be visible after scrolling down the div.      
         ((JavascriptExecutor)driver).executeScript("arguments[0].scrollIntoView(true);", eleAssistanceInput); 

         eleAssistanceInput.click();