3

webdriverのページにwebElementが見つからない場合、NoSuchElement例外は発生しません

Webelementがページで使用可能な場合、そのWebelementで実行されるすべての操作は機能しますが、Webelementがそのページで使用できない場合、理想的には、そのWebelementで操作を実行すると、例外がスローされます。しかし、私にとっては例外はなく、テストは応答しません。デバッグしても、その場所では応答しません。

誰かが私にこれが起こっていると言うことができますか?

4

4 に答える 4

5

要素を見つけるための暗黙のタイムアウトを設定してみてください

driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
try {
    driver.findElement(By.id("element_id"));
    System.out.println("Element Found");
} catch (NoSuchElementException e) {
    System.out.println("Element Not Found");
}
于 2012-08-28T07:17:31.920 に答える
1

アクションを実行する前に、「 Try/Catch 」ブロックで要素の存在を「主張」していることを願っています。一般的な慣行(私が従うこと、そして私が知っている多くのこと)は、要素の存在を主張し、それに対してアクションを実行することです(trueの場合)。

何かのようなもの -

public boolean isElementPresent(By by) {
    try {
        driver.findElement(by);
        System.out.println("Element Present");
        return true;
    } catch (NoSuchElementException e) {
        System.out.println("Element absent");
        return false;
    }
}

あなたのために問題を解決するかもしれません!

于 2012-08-27T06:43:44.077 に答える
1
[FindsBy(How = How.CssSelector, Using = "someCssSelector")]
IWebElement element;

  public static bool IsElementPresent(IWebElement element)
        {
            try
            {
                return element.Displayed;
            }
            catch (NoSuchElementException)
            {
                return false;
            }
        }

上記のコードは私のためにうまくいきました

于 2016-06-21T14:09:48.250 に答える
1

必ずインポートしてください: import org.openqa.selenium.NoSuchElementException ;

java.utilをインポートしないでください

于 2018-11-12T18:16:04.510 に答える