2

ボタンなどを使用せずにノートブックをめくりたいのですが、実際にはページのアクティブな要素をクリックするか、ページをドラッグして次の要素に移動します。ノートブックはこれに似たものです。私は多くの異なるアプローチを試しましたが失敗しました。

私が動作させようとしているコードは次のとおりです。

    WebElement page= driver.findElement(By.xpath("//*[@id='pages']/section[4]/div"));
    Actions kkk = new Actions(driver);
    Actions flip= kkk.moveToElement(page, 780, 200);
    flip.click().build().perform();

次のアプローチも試しました:

flip.perform();
Thread.sleep(200); //to allow the mouse to hover and activate the page
flip.click().perform();

何も機能せず、マウスが必要な場所にカーソルを合わせます。同じ場所をクリックしようとすると、リセットされてページがフラットに戻ります。

また、オフセット(座標)を使わずに、必要な場所(要素のアクティブスポット)を見つける方法はありますか?他の方法は考えられません。

4

1 に答える 1

1

これは、の行にもっとあるようですdrag and drop

このようなことをしてみてください

WebElement draggable = browser.findElement(By.xpath("//*[@id='pages']/section[4]/div")); 
new Actions(browser).dragAndDropBy(draggable, 200, 10).build().perform();  

に基づく

org.openqa.selenium.interactions.Actions.dragAndDropBy(WebElement source, int xOffset, int yOffset)

アップデート


またはこのように

WebElement element = driver.findElement(By.name("source"));
WebElement target = driver.findElement(By.name("target"));

(new Actions(driver)).dragAndDrop(element, target).perform();

更新2


またはこのように

Actions builder = new Actions(driver);

   Action dragAndDrop = builder.clickAndHold(someElement)
       .moveToElement(otherElement)
       .release(otherElement)
       .build();

   dragAndDrop.perform();
于 2012-11-08T14:06:58.897 に答える