2016-10-20 18 views
0

自動テストでは、ユーザーがマウスのポインタを何回かクリックしてからマウスボタンを放して、テキストをクリックしてシミュレートしようとしています。Java Selenium Webdriverを使って人がテキストを選択するシミュレーション

私はそれをユーザーとして実行すると、テキストが選択されている(ハイライト表示されている)ことを確認し、選択がマウスポインタで移動します。

セレンと一緒にすると、何も見ません。

ここにサンプルコードがあります。私が取り組んでいるページには、テキストの各単語を囲むスパンタグがあります。したがって、すべての単語には独自のWeb要素があります。 startSelectとendSelectは2つのWebElementsです。

public void doSomeMouseStuff() throws InterruptedException { 
     Actions actions = new Actions(getDriver()); 

     actions 
     .moveToElement(startSelect) 
     .clickAndHold() 
     .perform(); 

     actions 
     .moveToElement(endSelect) 
     .perform(); 

     try { 
      WebDriverWait wait = new WebDriverWait(getDriver(), 5, 1000); 
      wait.until(Predicates.<WebDriver> alwaysFalse()); 
     } 
     catch(TimeoutException e) { 
      //Ignore the timeout. It's what we *want* to happen. 
     } 

     actions 
     .release() 
     .perform(); 
    } 

私はテキストを選択するためにJavaScriptを注入することを考えましたが、その点は間違っています。後でそのページはマウスのクリックとドラッグで作業を行い、テストはユーザーがクリックしてドラッグしたように見える必要があります。

Webdriverで実際にテキストを選択するようにシミュレートするにはどうすればよいですか?持っているオフセットを取得これらの二つの方法

moveToElement(WebElement toElement, int xOffset, int yOffset)

moveByOffset(int xOffset, int yOffset)

を使用して考える

をしようとする

+0

すべてのアクションを 'actions.moveToElement(startSelect).clickAndHold()。moveToElement(endSelect).release()。perform()'と見て、それが動作している可能性があります。 –

+0

すべてのアクションを1行でもテキストがハイライトされません。 –

答えて

0

Webdriverは、ユーザーが望むようにブラウザとやりとりしないので、それを使用してテキストを選択することはできません。

JavaScriptのイベントリスナーをページに挿入することで、Webdriverが実際に適切なJavascriptイベントを発生させることがわかりました。

私たちの関数はJavaScriptのイベントを使用してその動作を駆動するので、この結果は十分であり、私は処理を進めることができます。

ありがとうございました。

0

は少しトリッキーかもしれないが、それは動作していないかもしれないが、価値がありますstartElement、 endElementのオフセットを取得します。 startElementとendElementの間のオフセットを計算する必要があります

action.moveToElement(startSelect).clickAndHold() 
.moveByOffset()//you need to input the x, y you calculate previously yourself here 
.moveByOffset() 
.moveByOffset() 
.moveByOffset() 
.moveByOffset() 
.moveByOffset() 
.moveToElement(endSelect) 
.release() 
.build() 
.perform(); 
+0

それもうまくいきませんでした。試してくれてありがとう。 –

関連する問題