2016-11-12 6 views
0

キャンバスコンテナの中にある画像をクリックしたいのですが、クリックを解除してマウスを他のポイントにドラッグすると、この操作全体が画像の一部に表示されます。Selenium - Actionクラスを使用して、いくつかのステップでアクションを実行することはできません。何が間違っていますか?

手動で動作しています。

public static void func(WebDriver driver, WebElement canvasImageContainer, 
              int startX, int startY, int endX, int endY) throws Exception { 

validateCoord(imageContainer.getSize(), startX, startY, endX, endY); //just validates the coordinates are not negative, not bigger than image size, etc 
int xOffset = endX - startX; 
int yOffset = endY - startY; 

Actions actions = new Actions(driver); 

actions.moveToElement(imageContainer, startX, startY) 
    .clickAndHold() 
    .moveByOffset(xOffset, yOffset) 
    .release() 
    .perform(); 
} 

しかし、それは私が間違ってそれを使用しています、何も起こった、機能していない:私はセレンをどうしようとした何

はありますか?

おかげ

答えて

1

我々は一連の操作と、我々は単一のアクションを実行する場合に使用する必要はありませんを実行しているとき、私たちは)(ビルドを使用します。上記のコードでは、複数の操作を実行しています。したがって、build()を使用してすべてのアクションを1つのステップにコンパイルする必要があります。

使用コードスニペットを次のように

actions.moveToElement(imageContainer, startX, startY) 
    .clickAndHold() 
    .moveByOffset(xOffset, yOffset) 
    .release() 
    .build() 
    .perform(); 
+1

は(実行)を明示的に呼び出すために内部で、必須ではありませんビルド()を呼び出します... – Grasshopper

関連する問題