Search code examples
c#seleniumselenium-webdriverautomationui-automation

The name 'ExpectedConditions' does not exist in the current context


I have to perform an action after an element is visible in the UI for this I'm using the below code but ExpectedConditions class is throwing an error saying The name 'ExpectedConditions' does not exist in the current context. Please suggest.

public void WaitForElementLoad(By by, int timeoutInSeconds)
{
    if (timeoutInSeconds > 0)
    {
        WebDriverWait wait = new WebDriverWait(WebDriver, TimeSpan.FromSeconds(timeoutInSeconds));
        wait.Until(ExpectedConditions.ElementIsVisible(by));
    }
}

Error CS0234 The type or namespace name 'ExpectedConditions' does not exist in the namespace 'OpenQA.Selenium.Support.UI' (are you missing an assembly reference?)


Solution

  • The below will solve your problem

    Make sure you've installed both the Selenium.Webdriver and Selenium.Support NuGet packages for your project. You'll need the Selenium.Support package to use ExpectedCondition

    OR

    Resolve this way:

    1: Using nuget, search for DotNetSeleniumExtras.WaitHelpers,

    2: Import that namespace into your class.

    using SeleniumExtras.WaitHelpers
    

    3: Then example of code code:

     WebDriverWait wait = new WebDriverWait(driver, TimeSpan.FromSeconds(10));
        wait.Until(SeleniumExtras.WaitHelpers.ExpectedConditions.ElementIsVisible(By.Id("element ID")));