2016-07-28 45 views
0

我試圖在java中使用selenium webdriver將滾動條移動到右側,以便專注於獲取屏幕截圖的元素,但在嘗試瞭解我知道的所有信息後,我無法獲取它。Selenium Java滾動條在

的情況顯示在圖1: sorry for deleting data due to privacy issues

正如你可能會看到,滾動位於成藍色矩形元素,

我已經試過這一個:

 JavascriptExecutor js; 
    js = (JavascriptExecutor) driver; 
    js.executeScript("$(\"#Pagination\").animate({ scrollLeft: \"-50000px\" })"); 

分頁是div id。

你能幫助我嗎?

最好的問候。

+0

那麼,Java還是JavaScript? – Pavlo

+0

@Pavlo既可以在Java中執行JavaScript的WebDriver。是的,應該添加正確的標籤。 – Edgar

回答

2

使用'OpenQA.Selenium.Interactions.Actions'移動到元素。它應該自動獲取元素的位置x,y並滾動到它。

// Initialize instance 
Actions action = new Actions(webdriver); 

// Find element to focus inside iframe 
WebElement we = webdriver.findElement("<find element you wish to focus>"); 

// Perform move action 
action.moveToElement(we).build().perform(); 

雖然沒有測試,但希望這有助於。

UPDATE:

你有兩個非常相似的標識 - 「#Pagina 牛逼離子」 和 「#Pagina Ç離子」。這真是令人困惑。
另外,您應該考慮將類添加到您有數據的行,如data-row

注意:請確保您正確找到該元素。在顯示錶格數據時,該元素將是表格單元格,而不是表格本身。

1) Java代碼你存儲腳本到字符串變量:

String script = "return $('#Paginacion').find('.data-row').eq(%1$d - 1).find('td').eq(%2$d - 1)"; 

2)然後容易地通過rowNumbercolumnNumberexecuteScript 方法。
       注意:還應該添加空檢查。

int rowNumber = 1; 
int columnNumber = 19; 

List<WebElement> webElements = (List<WebElement>)js.executeScript(String.format(script, rowNumber, columnNumber)); 

3)元素時發現,只需撥打moveToElement方法

action.moveToElement((WebElement) webElements.get(0)).build().perform(); 

測試和它的作品。

+0

謝謝您的回覆,但它不起作用,因爲滾動條不會從開始位置移動。 看起來像滾動表已經可見,所以關注它不會移動滾動條。 其他選項,帥哥?謝謝。 – DPSeen

+0

@ user6648978你能否在[jsfiddle](https://jsfiddle.net/)中創建一個小樣本html,類似於你的項目中的樣子? – Edgar

+0

給你。 https://jsfiddle.net/51463j0g/ 讓我們假設我想移動滾動條,直到屏幕上出現表格中編號爲19的元素。 – DPSeen