0

私は、Javaでselenium webDriverを使用しています。にある解決策を探しています。セレンの時にリスト内の各要素に移動して要素を見つけると、となります。ある場所から別の場所に識別された要素のドラッグ&ドロップのリストを実行するたびに、クロムドライバがポイント/座標で動作するため、「ChromeDriver」に固有の解決策を探しています。javaを使用して各要素moveTo()でfindElements()実装をSeleniumでオーバーライドする方法は?

シナリオの説明:私のアプリケーションは、各テーブル行の下にサブ項目として 'liとui'のリストを持つ2つのテーブル(T1とT2)を持っています。ドラッグ&ドロップする必要があります。 'T2'行/ 'web要素'を 'T1'行の下に一致するWeb要素にドラッグアンドドロップする必要があります(ドラッグアンドドロップ中にビューポートに表示または非表示になる可能性がありますがmoveTo() 。

問題:Chromeでスクリプトを実行しているときに、「T2」の現在のビューポートに存在しないウェブ要素がクリックされ、「T1」の「親ウェブ要素」にドラッグされます。しかし、最初に実行した後、ウェブページの位置合わせが途切れ、その後のドラッグアンドドロップは、以前に識別された要素の位置が変更されたために失敗しています。

私は 'T2要素1をクリックしてドラッグアンドドロップを実行する、javascriptエグゼキュータを使用してビューポートなどに要素を表示するなど複数のアプローチを試みましたが、UIの配置が壊れるたびに。

誰かがMoveTo()関数を使って 'Selenium FindElements()メソッドのカスタム実装に取り​​組んでいれば知りたいのですが?

ような何か:あなたの質問に特異的に答えるために

@Override 
     public List<WebElement> findElements(By arg0) { 
      List<WebElement> moveAndFind = null; 
      try{ 
       WebElement firstIndex = Driver.findElement();//Move to first matching element of By argument. 
       moveAndFind.add(firstIndex); // Collect all the matching elements in the web page by capturing the updated location - specific to Chrome driver 
      }catch(WebDriverException ex){ 
       ex.printStackTrace(); 
      } 
      return moveAndFind; 
     } 
+0

誰でも、ドラッグアンドドロップ操作を実行したときにChrome UIの位置合わせブレークを処理する方法を提案できます。 – ajesh

答えて

0

、あなたができないoverride私はJavaの実装とその慣れていないんだから、私はFindElement(または、の実装何かを意識していない)。

すでにあなたのリストを作成しておりますので
  1. 、あなたは常にリストの末尾から移動することができ:

    は今、あなたの問題を克服するために、あなたはいくつかのオプションがあります。このように、要素の順序は常に最初のインデックスと同じです。

  2. ラムダ式を使用して、リスト内の要素をインデックス以外のもので識別します。
  3. 要素を移動するたびにリストを更新して再構成します。移動する必要のある要素の数に応じて、これはパフォーマンスが悪い選択肢であることが判明する可能性があります。
+0

あなたの要点に暖かい歓迎! しかし、私は各リストに多数のリスト項目を持っています。リストを再構成することは実現可能な解決策にはならないでしょう。それは、自動化のパフォーマンスを低下させるからです。 – ajesh

+0

そう思った。次に、私が見る最も簡単なオプションは、リストの一番下からドラッグ&ドロップを使うことです。 – Cosmin

関連する問題