(Migrating from Java-Selenium to C#-Selenium)
When searching for explicit waits with Selenium and C# I find several posts with code that looks similar to the Java-Counterpart:
for example here:
WebDriverWait wait = new WebDriverWait(driver, new TimeSpan(0,0,5)); wait.Until(By.Id("login"));
or here:
WebDriverWait wait = new WebDriverWait(driver, 30); wait.until(ExpectedConditions.visibilityOfElementLocated(By.id("locator")));
WebDriverWait are from the OpenQA.Selenium.Support.UI namespace and comes in a separate package called Selenium WebDriver Support Classes
BUT:
When I try to code this myself in Visual Studio (getting Selenium package via NuGet), using WebDriverWait
in my code will prompt the message:
The type or namespace name 'WebDriverWait' could not be found (are you missing a using directive or an assembly reference?)
Even though I am including the Selenium reference via
using OpenQA.Selenium;
When looking up the documentation for WebDriverWait you will find, that there should be a namespace called
OpenQA.Selenium.Support.UI
But I cannot access it via "using" in my code.
Why does this happen? Where can I find the WebDriverWait class?
WebDriverWait is a class. Q3. What is Fluent wait in selenium? The Fluent wait in selenium is to defined maximum time of wait for a condition and also frequency with which we want to check the condition before throwing an 'ElementNotVisibleException' exception.
Selenium WebDriverWait is one of the Explicit waits. Explicit waits are confined to a particular web element. Explicit Wait is code you define to wait for a certain condition to occur before proceeding further in the code.
Implicit Wait directs the Selenium WebDriver to wait for a certain measure of time before throwing an exception. Once this time is set, WebDriver will wait for the element before the exception occurs. Once the command is in place, Implicit Wait stays in place for the entire duration for which the browser is open.
Luckily I sometimes read the comments to answers as well, so I stumbled across the solution within the highest ranked comment here:
WebDriverWait [is] from the OpenQA.Selenium.Support.UI namespace and comes in a separate package called Selenium WebDriver Support Classes on NuGet
Thanks @Ved!
In Visual Studio this means, that you need to install TWO packages:
Coming from Java with Maven, this is not trivial (at least to me ;-), because until now I just needed to include one and only one dependency to get "all of the good stuff" like this:
<dependency> <groupId>org.seleniumhq.selenium</groupId> <artifactId>selenium-java</artifactId> <version>2.46.0</version> </dependency>
* Posted this as a question including the answer because it cost me too much time and luck to stumble over the answer.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With