2017-05-22 30 views
0

私は機能テスト(link)を自動化するためにSeleniumでのインターンテストを使用しています。geckodriverを使用してマウスを位置に移動

複数のブラウザに対して実行できる必要があります。だから我々は、クロームにもっと焦点を当てたが、また、我々はIEFirefoxのに対してテストを実行することができましたが、geckodriver後にリリースされた、我々はそれに切り替え、マウスイベントを暗示しているテストのほとんどが失敗しています、例えば、私は次の例外取得していますmoveMouseTo()を呼んでいるとき:私は要素の上にホバリングについて同様の質問を見つけたと私はそれがmoveMouseToからコードを実行することにより、インターンで動作するように管理さ

Executing: [mousemove: 7 false]) 
WARN - Exception thrown 
org.openqa.selenium.UnsupportedCommandException: mouseMoveTo 

を私たちはマウスイベントが壊れているような機能を持っていたので、私はちょうど、brokenMouseEvents

//if (this.capabilities.brokenMouseEvents) { 
    if(element){ 
     return element.getPosition().then(function(position){ 
      return self.execute(simulateMouse, [ { 
         action: 'mousemove', 
         position: position, 
         element: element, 
         xOffset: xOffset, 
         yOffset: yOffset 
        } ]).then(function (newPosition) { 
         self._lastMousePosition = newPosition; 
        }); 
       }) 
    } else{ 
      return self.execute(simulateMouse, [ { 
       action: 'mousemove', 
       position: self._lastMousePosition, 
       element: element, 
       xOffset: xOffset, 
       yOffset: yOffset 
      } ]).then(function (newPosition) { 
       self._lastMousePosition = newPosition; 
      }); 
     } 
//} 

しかしmoveMouseTo()は、要素のためにスクロールすることも使用することができ、またmoveMouseTo()関数はノードモジュールで定義されているので、我々はそれを使用することはできません、と私たちは実行しようとすると、それは失敗しますので、これは、スクロールを壊すことJenkinsのテスト。 別の考えでは、私たちがのFirefoxに対して実行している場合を処理するためのラッパー関数を作成することになると思います。その場合は別のコードを実行し、他のブラウザではmoveMouseTo()この場合、スクロールの問題を解決する方法がわかりません。

誰にも分かりませんか?

ありがとうございます!

答えて

0

私はあなたが要素に移動するために、これを試してみてくださいActionsクラス

Actions ac= new Actions(driver); 
ac.movetoElement().build().preform(); 
0

を使用することができる要素に移動すると思う:

JavascriptExecutor jse = (JavascriptExecutor)driver; 
jse.executeScript(arguments[0].scrollIntoView();", webElement); 
関連する問題