WebElement#findElement(By)
をBy.cssSelector
と使用すると、要素全体が検索されます。しかし、私は現在のビューのみで選択を制限したい。私はセレンが "スクロールバーを使う"ことを許可したくありません。どうすればこれを達成できますか?現在のビューに要素を配置します
3
A
答えて
1
これを行う方法は、ページ上のすべての要素を取得し、それらをビューポートから除外する方法です。
WebElement.getLocation()
は、このための基礎ツールです。
ページの左上隅にある場合(読み込み後のデフォルト)、window.innerHeight
とwindow.innerWidth
(ほとんどのブラウザがIE9 +です)を使用できます。あなたは、ビューポートがデフォルトの位置になることを確かに言うことができない場合
// assuming JS is enabled for this instance of driver
JavascriptExecutor js = (JavascriptExecutor)driver;
int viewportWidth = (Integer)js.executeScript("return window.innerWidth;");
int viewportHeight = (Integer)js.executeScript("return window.innerHeight;");
List<WebElement> list = driver.findElements(By.cssSelector("whatever"));
for (Iterator<WebElement> iter = list.iterator(); iter.hasNext();) {
WebElement elem = iter.next();
Point p = elem.getLocation();
if ((p.getX() > viewportWidth) || (p.getY() > viewportHeight)) {
iter.remove();
}
}
(座標[0、0])、あなたは条件にwindow.mozInnerScreenX
とwindow.mozInnerScreenY
(Firefoxのは、3.6以上必要)を追加することができます。あるいは、恐らくより良い、window.scrollX
とwindow.scrollY
です。
部分的に表示された要素を含めるかどうかを定義し、それに応じてアルゴリズムを調整する必要もあります(レスキューにWebElement.getSize()
!)。
検索後にビューポートが変更されても問題が解決しない場合は、window.scroll()
で元の位置に戻ってみてください。
関連する問題
- 1. Scrollviewの現在のビューポートに要素を中央に配置
- 2. angle 2現在の要素を置き換えます。
- 3. 別の要素の上にdiv要素を配置します
- 4. メニューの現在の要素と現在の要素との後ろに現在の要素を設定します。
- 5. backbone.jsビューで現在のjQuery要素を使用しています
- 6. 現在の要素以外の要素をスライドさせます
- 7. 配置要素
- 8. 要素の配置
- 9. 私は現在の要素
- 10. Java - requestFocus現在の要素
- 11. 要素を配列に配置する
- 12. UI XCTest、ビューに存在する要素
- 13. 絶対要素を絶対位置に配置します。 IE
- 14. オブジェクトを別のオブジェクトの現在の位置に配置します。
- 15. クリックした要素のコンテンツを別の要素に配置
- 16. jQuery:現在の要素の後の要素を削除します。
- 17. javascriptで現在の要素の1レベル下の要素を取得します
- 18. 要素を配列に配置しますか?
- 19. 要素を別の要素の中央に配置しますか?
- 20. backbone.js-eventsの現在の要素にアクセスしますか?
- 21. バインディングラジオボタンオブジェクトの現在の配列の要素にチェックされています
- 22. 現在の要素を取得する
- 23. 現在ビューポートにある要素を検出します
- 24. VBScript - 配列要素をGetElementByIdに配置
- 25. Css要素を別の要素のすぐ隣に配置
- 26. Javascriptで別の要素の下に要素を配置する
- 27. 円のパスに要素を動的に配置します
- 28. 現在のキャレット位置にあるTINY MCEにプレースホルダを配置
- 29. スクロールビューの各要素の上にラベルを配置しますか?
- 30. IEのの右上に要素を配置します
別のCSSセレクタ/ XPath式を書いて以来、私は本当にこのユースケースに興味があります。 –