1. ホーム
  2. java

[解決済み] Selenium WebDriverを使用して要素が存在するかどうかをテストしますか?

2022-03-09 10:27:10

質問

ある要素が存在するかどうかをテストする方法はありますか?なぜなら、要素が存在しないことがあり、それは問題なく、テストの失敗ではないので、例外が解決策になることはありえません。

こんな投稿がありました。 Selenium c# Webdriver: 要素が存在するまで待つ しかし、これはC#のためのもので、私はあまり得意ではありません。誰かこのコードをJavaに翻訳してくれませんか?私はみんなごめんなさい、Eclipseでそれを試してみましたが、私はそれをJavaコードに正しく取り込むことはできません。

これがそのコードです。

public static class WebDriverExtensions{
    public static IWebElement FindElement(this IWebDriver driver, By by, int timeoutInSeconds){

        if (timeoutInSeconds > 0){
            var wait = new WebDriverWait(driver, TimeSpan.FromSeconds(timeoutInSeconds));
            return wait.Until(drv => drv.FindElement(by));
        }

        return driver.FindElement(by);
    }
}

解決方法は?

使用方法 findElements の代わりに findElement .

findElements は、マッチする要素がない場合は例外ではなく、空のリストを返します。

ある要素が存在するかどうかを確認するには、次のようにするとよいでしょう。

Boolean isPresent = driver.findElements(By.yourLocator).size() > 0

これは、少なくとも1つの要素が見つかればtrueを、存在しなければfalseを返します。

公式ドキュメント はこの方法を推奨しています。

findElement は、存在しない要素を探すために使用すべきではありません。代わりに findElements(By) を使用し、長さゼロの応答を表明してください。