特定のシナリオでは、マウスを完全に制御する必要があり、actions()
クラスではそれができません。
私のアプリケーションにはマップがあり、なげなわを使用してマップの特定の部分を選択する機能があります (なげなわで円を描き、選択が赤い円で表されるとします)。さらにナビゲーションするためにポップアップのみが表示されます。 、しかし、以下のようなアクションクラスを使用すると
var loc = element(by.xpath("//span[@id='imgLasso']"));
browser.actions()
.mouseMove(loc, {x: 550, y: 436})
.mouseDown()
.mouseMove({x: 700, y: 236})
.perform();
実際のマウスの動きは発生せず、Java ロボット クラスを使用する以外に解決策が見つからなかったため、ロボット メソッドを含む Java クラスを呼び出すバッチ ファイルを作成したいのですが、方法がわかりません。
アップデート
it("working with lasso",function() {
browser.sleep(5000);
element(by.xpath("//span[@id='imgLasso']")).click();
var plot0 = element(by.xpath("//span[@id='imgLasso']"));
browser.sleep(2000); // intentional wait
browser.actions()
.mouseMove({x: 100, y: 100})
.mouseDown()
.mouseMove({x: 400, y: 0})
.perform();
browser.sleep(8000);
element(by.xpath("//*[@id='imputTerritory']")).sendKeys("NewTeritory");
});
上記のコードを実行したときの私の観察結果は次のとおりです。
- 行まで
var plot0
、コードは正常に実行されます。 - その後、
browser.action()...
Chrome が分度器によって閉じられる直前にのみ実行されます。理由がわからない。(また、それを確認するために睡眠を含めました) - また、Chrome を閉じる直前に、マップ上に赤い直線が表示されますが、その後にポップアップが表示されません (アクション クラスによってマウスが解放されない可能性があります)。
今回追加するplot0
のは、コードに要素を渡していないことです。上記の仕様が実行される直前に、マップ上にマウス ポインターを手動で置いているだけです。