4

Selenium C#を使用して例外をスローせずに、要素がページに存在するかどうかを確認する方法はありますか?

4

3 に答える 3

9

あなたの代わりに を使用することもできます.FindElements。何にも一致しないセレクターを指定すると、例外をスローするのではなく、空のリストを返します。

var elementExists = driver.FindElements(By.ClassName("something")).Any();

Anyリストに何かが含まれているかどうかを確認するだけのLINQメソッドです(考えて.Count == 0ください)。

于 2015-01-21T22:43:21.357 に答える
1

I would use try catch block with explicit wait

public bool CheckElementExist(string state)
{
    //Write the selector carefully.
    By byCss = By.CssSelector("#view-" + state + "");
    try
    {
     //Explicit wait to check if element exist for 10s   
     new WebDriverWait(Driver, TimeSpan.FromSeconds(10)).Until(ExpectedConditions.ElementExists(byCss));
        return true;
    }
    catch (NoSuchElementException)
    {
        return false;
    }
}
于 2015-01-21T20:27:40.367 に答える
-1

http://docs.seleniumhq.org/docs/04_webdriver_advanced.jsp

There is something called an explicit and implicit wait take a look at the above link.

于 2015-01-21T20:27:39.043 に答える