2016-07-28 7 views
0

Javaでselenium webdriverを使用して右にスクロールバーを移動しようとしていますが、要素に焦点を当ててスクリーンショットを取得しようとしましたが、セクション内のSelenium Java Scroll Bar

シナリオは画像1に示されている:

は、私が試した、あなたが見ているよう sorry for deleting data due to privacy issues

、スクロールが青い四角形の要素の中に位置しています。この1:

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

ページネーションはdiv idです。

あなたは私を助けることができますか?

よろしくお願いいたします。

+0

Java、JavaScript? – Pavlo

+0

@Pavlo Both- JavaのWebDriverでjavascriptを実行できます。はい、正しいタグが追加されるはずです。 – 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:

あなたは2つの非常に類似したIDS持っている - "#Pagina トンイオン" と "#Pagina Cイオンを"。それは本当に混乱しています。
また、データがある行にクラスを追加することを検討する必要があります(data-rowなど)。

注:要素を正しく見つけるようにしてください。表のデータを表示すると、その要素は表そのものではなく表のセルになります。 Javaコードで

1)、文字列変数にスクリプトを格納する:

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

2)そして容易executeScript 方法rowNumbercolumnNumberを渡します。
       注:ヌルチェックも追加する必要があります。要素が見つかった場合

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