0

iframe のあるページがあります。iframe 内にはテーブルがあります。ユーザーがこの表の上にマウスを移動すると、いくつかの要素が表示されます。それらの要素の 1 つをクリックしたいと思います。

私の最初のステップのいくつかは、iframe を選択してから moveToElement(table) にすることだと思います。しかし、これにより MoveTargetOutOfBoundsError が発生します。

奇妙なことは、iframe を選択してテーブルをクリックできることです。クリックは要素の x、y 座標について不平を言いませんが、moveToElement は不平を言います。なんで?(残念ながら、テーブルをクリックすると、これらのボタンを非表示にするアクションが実行されるため、これはオプションではありません。)

そして、どうすれば私が望むことを達成できますか(iframeを選択し、テーブルの上にカーソルを置き、ボタンが表示されるのを待ち、ボタンの1つをクリックします)?

バージョン情報:

Build info: version: '2.28.0', revision: '18309', time: '2012-12-11 15:53:30'
System info: os.name: 'Windows 7', os.arch: 'amd64', os.version: '6.1', java.version: '1.6.0_37'

テーブルのクリックに成功する Java コードは次のとおりです。

driver.switchTo().defaultContent();
driver.switchTo().frame("frameId");
WebElement e = driver.findElement(By.id("foo"));
e.click();

テーブルの場所について不平を言うJavaコードは次のとおりです。

driver.switchTo().defaultContent();
driver.switchTo().frame("frameId");
WebElement e = driver.findElement(By.id("foo"));
Actions builder = new Actions(driver);
builder.moveToElement(e).build().perform(); // error happens in moveToElement()
4

1 に答える 1

2

スクロールして表示する必要があると思います:

if (element instanceof Locatable) {
    Locatable remoteElement = (Locatable) inputElement;          
    remoteElement.getLocationOnScreenOnceScrolledIntoView();
}

要素にカーソルを合わせたい場合は、上記を少し拡張する必要があります。

if (element instanceof Locatable) {
    Locatable hoverItem = (Locatable) element;
    hoverItem.getLocationOnScreenOnceScrolledIntoView();
    Mouse mouse = ((HasInputDevices) webDriver).getMouse(); 
    mouse.mouseMove(hoverItem.getCoordinates());
}
于 2013-01-04T21:28:47.513 に答える