2016-08-19 6 views
2

クラスでは、セレンテストではByのみをパラメータとして使用し、一部はWebElementのみをパラメータとして使用し、両方のパラメータをサポートするメソッドをオーバーロードするメソッドもあります。Selenium ExpectedConditionsパラメータ

  • presenceOfElementLocated(ロケータによって最終)
  • visibilityOf(最終WebElement要素)
  • elementToBeClickable(ロケータによって最終)
  • elementToBeClickable(最終WebElement要素)

だから私の質問は以下のとおりです。すべていけないのはなぜ

  1. メソッドはBy、WebElement、またはその両方を使用しますか?
  2. By WebElement以上の利点はありますか?
  3. ページオブジェクトモデルを使用している場合、ページ上の同じ要素に対してByインスタンスとWebElementインスタンスの両方を維持する必要があるのでしょうか?

出典:https://github.com/SeleniumHQ/selenium/blob/master/java/client/src/org/openqa/selenium/support/ui/ExpectedConditions.java

答えて

0

実際には要件

  • presenceOfElementLocated(final By locator)に依存しています:

    要素は、ページのDOMに存在することを確認するために期待。これは要素が可視であることを必ずしも意味しません。すでにWebElementを発見した場合、その後は何もありませんので、あなただけのByロケータを使用することができます。ここ

WebElementを渡すことで、このExpectedConditionsを使用しても意味が。

  • visibilityOf(final WebElement element)

    ページのDOMに存在することが知られている要素は、表示されていることを確認するための期待。可視性は、要素のみが表示されていないことを意味だけでなく、あなたがWebElementを持っていて、すでにDOMに存在する、この要素を知っていて、古くなっていないならば0より大きい

手段である高さと幅を持っています実行時にページの変更が原因でStaleElementExceptionがスローされないことを意味しますが、要素が表示されているかどうかわからない場合は、WebElementを渡してこのを使用します。

  • elementToBeClickable(final By locator)elementToBeClickable(final WebElement element)

    要素をチェックするための期待が目に見えるし、あなたがそれをクリックすることができるように有効です。

手段あなたはWebElementを持っていて、すでにDOM上に存在し、この要素を知っているし、これが原因実行時にページの変更にStaleElementExceptionをスローしないでしょう陳腐な手段ではないでしょうが、あなたが知っていない場合要素が表示され、有効にするかどうかはelementToBeClickable(final WebElement element)を使用します。

しかしelementToBeClickable(final WebElement element)条件セレンでのみ可視性をチェックし、すでにWebElementしばらくした条件を有効にするため、それが原因StaleElementExceptionに条件を満たしていませんでしたelementToBeClickable(final WebElement element)ExpectedConditionsをチェック中のページは変更になる場合AJAXやその他の理由による多少の時間elementToBeClickable(final By locator)ExpectedConditionsを使用すると、セレンは、その要素が表示されていることを確認する前に要素を検索し、StaleElementExceptionによる障害の可能性を克服することができます。

ByWebElement以上に使用した場合の利点です。

関連する問題