Sikuli の助けを借りてマップ上の特定の領域をクリックすることに成功しましたが、私の要件はSikuli Webdriverを介してマップに描画することです
これは、Sikuli で描画できるようにしたいものの例です。
Sikuli の助けを借りてマップ上の特定の領域をクリックすることに成功しましたが、私の要件はSikuli Webdriverを介してマップに描画することです
これは、Sikuli で描画できるようにしたいものの例です。
あなたは Sikuli webdriver を持っていて、その例を見ています。webdriver を使用して、マップ webapp 内で描画したいと考えています。これはサポートされていませんが、可能です (いくつかのハッキングが必要です)。必要な部品へのポインタを次に示します。
Sikuli Web ドライバーのコードはBitbucket にあります。コードを分岐して変更する必要がありDefaultImageElement
ます。現時点では、 と の方法しか認識していませんが、必要な要素の座標click()
をdoubleClick()
持っています。
次に、 Advanced User Interactionに関する Selenium のページを見てみましょう。あなたが望むものである「アクションチェーンの生成」セクションがあります。ドキュメントは Web 要素で動作するもののみを示していますが、Actions
クラスにはマウスをやみくもに操作する他のメソッドがあります。
これをまとめると、Sign Hill ParkをクリックしてOn Trac Warehouseにドラッグするとします。これはスケルトン コードです。何かを実行するには、一連の実装作業を行う必要があります。
あなたが書いた新しいメソッドを使用して
ImageElement park = driver.findImageElement(SIGN_HILL_PARK_IMG);
ImageElement warehouse = driver.findImageElement(WAREHOUSE_IMG);
park.dragTo(warehouse)
の実装のアイデアdragTo
:
public class DefaultImageElement {
//...
public void dragTo(DefaultImageElement dest) {
Actions builder = new Actions(driver);
Action dragAction = builder.moveToElement(containerWebElement, x, y) //containerWebElement is the element that holds the map, x and y are the location of our target within the map
.clickAndHold()
.moveToElement(dest.containerWebElement, dest.x, dest.y)
.release()
.build();
dragAction.perform();
}
//...