2016-09-26 19 views
0

C#のSelenium Webdriverを使用して、グリッドが表示されたWebページをUIテストしています。Selenium(C#)のサブセクションをスクロールダウンする方法は?

グリッドには独自のスクロールバーがあり、グリッドの下部までスクロールして、モーダルフォームを使用して特定の結果が表示されたことを確認します(UIテストは現在失敗しています。下にスクロールするまで結果を見ない)。

メインWebページの通常のスクロールバーとは対照的に、グリッドのスクロールバーをターゲットにするにはどうすればよいですか?これは私のグリッドのスクロールバーのHTMLです:

<div class="ScrollbarLayout_face ScrollbarLayout_faceVertical public_Scrollbar_face" style="height: 367.38px; transform: translate3d(0px, 148.535px, 0px); backface-visibility: hidden;"></div> 

私は以下のコードを使用して考えていたが、私はにスクロールし、グリッドの一番下にある要素をターゲットにする方法を考えることができませんか?

WebElement element = driver.findElement(By.id("my-id")); 
Actions actions = new Actions(driver); 
actions.moveToElement(element); 
actions.perform(); 
+0

を送信: ((IJavaScriptExecutor)ドライバ).ExecuteScript( "arguments [0] .scrollIntoView()"、driver.FindElement()メソッドを呼び出すと、 (By.id( "my-id")))); –

+0

これは私の問題です。最初に要素をターゲットにしたり見つけることができれば、スクロールダウンする必要はありません。私のUIテストは失敗しています。なぜなら、グリッドの下部にあっても見えなくても、要素は表示できないからです。 – Marcus

+0

必要なときにスクロールしたい場合は、 'element.Displayed'プロパティをチェックしてスクロールするかどうかを判断できます。 –

答えて

1

まず、設定された焦点は、次に、2つの行の下に追加します。

Actions actions = new Actions(driver); 
actions.SendKeys(OpenQA.Selenium.Keys.End).Build().Perform(); 
+0

ありがとう、この回答は基本的に私のためにありました。 私がする必要があったのは、スクロールバーをターゲットにしてそれを一度クリックしてアクティブにすることでした。私はアクションを介して "Page Down"コマンドを送信しました(何らかの理由でEndが機能しませんでした)。 乾杯! – Marcus

0

スクロールせずにその要素に対してアクションを実行しようとします。 つまり、findElement()で要素を取得し、ページをスクロールせずにその要素に対してアクションを実行します。任意のイベント

driver.FindElement(By.XPath("/html/body/div[2]//table/tbody/tr[1]/td[1]")).Click(); 

を使用して、グリッドの任意のオブジェクトに

+0

これは当初私がやろうとしたことです。私のグリッドはプロパティ、行、すべての行とその情報を格納しています。 私は新しい行を追加すると、私の検索コード(擬似)は次のようになります:MyGrid.Rows.First(row => row.Text == "ランダム文字列"​​) ブレークポイントでデバッグすると、 MyGrid.Rowsオブジェクトとすべての行がそこにあります。より詳細な検査では、グリッドに表示されない行(つまり、スクロールして表示する必要がある行)はMyGrid.Rowsオブジェクトに表示されますが、すべての値は空の文字列として表示されます。 – Marcus

+0

また、私が最初に要素を見つけることができれば、それは私のUIテストが通過することを意味します!私のUIテストでは、グリッド内の行が一致する要素をチェックします。 MyGrid.Rows.First.Should()。Be( "ランダムな文字列"); – Marcus

+0

これを試してください Mouse.MoveScrollWheel(UITestControl、Int32)、 "UITestControl"がグリッドコントロールになる – nimesh

0

私は、ユーザーnikhilpから助けるためにこの感謝を解決するために管理:

a)スクロールバーのXPathを対象とする

Driver.FindElement(By.XPath("//*[@id=\"myGrid\"]/div/div/div[2]/div")) 

B)

.Click() 

C、それをアクティブにするために、一度スクロールバーをクリック)あなたはjavascript関数[ `Element.scrollIntoView()`](HTTPSを試してみてくださいページダウンコマンドに

Actions actions = new Actions(Driver); 
actions.SendKeys(Keys.PageDown).Build().Perform(); 
関連する問題