c# - 如何检查元素是否存在?

标签 c# selenium firefox xpath

在我的 C# 中 Windows Forms使用 Firefox 的应用程序 Selenium WebDriver我需要检查一个元素是否存在,如果不存在,请单击另一个元素。如果有视频,观看后变成W_VIEWED:

driver.FindElement(By.XPath("//div[@class='video']/a")).Click();
else
{
    driver.FindElement(By.XPath("//div[@class='W_VIEWED']/a")).Click();
}

Error 3 Only assignment, call, increment, decrement, await, and new object expressions can be used as a statement 242

最佳答案

你可以通过使用检查一个元素是否存在

bool isElementDisplayed = driver.findElement(By.xpath("element")).isDisplayed()

请记住,findElement 会在找不到元素时抛出异常,因此您需要正确处理它。

在我的一个应用程序中,我通过在单独的函数中检查元素来处理异常:

private bool IsElementPresent(By by)
{
    try
    {
        driver.FindElement(by);
        return true;
    }
    catch (NoSuchElementException)
    {
        return false;
    }
}

调用函数:

if (IsElementPresent(By.Id("element name")))
{
    // Do if exists
}
else
{
    // Do if does not exists
}

关于c# - 如何检查元素是否存在?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27516545/

相关文章:

html - FireFox 中的 margin 问题

c# - 无法从 ComboBox 获取值

c# - 如何计算二维数组中唯一组合的总和

javascript - 在 Firefox 中拖动鼠标时如何防止文本选择?

java - 步骤失败 : SeleniumError: Unable to create new service: ChromeDriverService Build info: version: '3.141.59'

python - 如何使用 selenium python 绑定(bind)的相对 xpath 来定位 dom 元素?

javascript - onfocus 在 Firefox 中不起作用(触发)

c# - C# 中的 Windows 服务无法启动

c# - 用于单元测试目的的重载构造函数

python - 如何在 Python Selenium 中获取 WebElement 的类名?