1

一部のアイテムを操作しようとすると、次のエラーが発生します。

Element cannot be scrolled into view:javascript:void(0); (Selenium::WebDriver::Error::MoveTargetOutOfBoundsError)

これは、要素がブラウザーにあり、表示されている場合でも、AJAX 呼び出しの直後にモーダル (Bootstrap) と対話するときに発生します。

私が見つけた回避策の 1 つは、手動でページに再度アクセスすることでした (これにより、テスト シナリオが混乱することはありませんでした)。

このようなエラーに対するより良い方法はありますか?

4

1 に答える 1

2

ajax のテストはトリッキーです。これは非同期であるためです ;)
したがって、ページで特定のオブジェクトが発生するまで待機する必要があります。
そして、フレームワークに応じて、いくつかのトランジションまたはアニメーションが実行されるので、それらも待つ必要があります。

正確に何を待たなければならないかは、アプリケーションと使用している JS フレームワークによって異なります。css クラスや ID などの可能性があります。
たとえば、jQuery モバイルでは、css クラスui-mobile-viewport-transitioningが削除されるまで待つ必要があります。その後、移行が完了し、テストを続行できます。

待機の Java コードの例を次に示します。

webdriverWaiter.waitUntil(ExpectedConditions.invisibilityOfElementLocated(By.cssClass("ui-mobile-viewport-transitioning")));

それが役立つことを願っています

于 2013-03-05T13:36:22.647 に答える