在OpenQA.Selenium(C#)中找不到WebDriverWait类

drk*_*hng 28 c# selenium selenium-webdriver

(从Java-Selenium迁移到C#-Selenium)

当使用Selenium和C#搜索显式等待时,我发现几个帖子的代码看起来类似于Java-Counterpart:

例如这里:

WebDriverWait wait = new WebDriverWait(driver, new TimeSpan(0,0,5));
wait.Until(By.Id("login"));
Run Code Online (Sandbox Code Playgroud)

或者在这里:

WebDriverWait wait = new WebDriverWait(driver, 30);
wait.until(ExpectedConditions.visibilityOfElementLocated(By.id("locator")));
Run Code Online (Sandbox Code Playgroud)

WebDriverWait来自OpenQA.Selenium.Support.UI命名空间,并且位于一个名为Selenium WebDriver支持类的单独包中

但是:
当我尝试在Visual Studio中编写代码(通过NuGet获取Selenium包)时,WebDriverWait在我的代码中使用将提示消息:

找不到类型或命名空间名称'WebDriverWait'(您是否缺少using指令或程序集引用?)

即使我通过包括Selenium参考

using OpenQA.Selenium;
Run Code Online (Sandbox Code Playgroud)

在查找WebDriverWait文档时,您会发现应该有一个名为的命名空间

OpenQA.Selenium.Support.UI

但我无法通过代码中的"使用"访问它.

为什么会这样?我在哪里可以找到WebDriverWait类?

drk*_*hng 58

幸运的是,我有时读答案以及评论,让我遇到了排名最高的注释中的解决方案绊倒在这里:

WebDriverWait来自OpenQA.Selenium.Support.UI命名空间,并且 位于NuGet上名为Selenium WebDriver支持类单独包中

谢谢@Ved!

在Visual Studio中,这意味着您需要安装两个包:

  • NuGet包" Selenium.WebDriver "还有
  • NuGet包" Selenium.Support "

来自Java与Maven,这不是微不足道的(至少对我来说;-),因为直到现在我只需要包含一个且只有一个依赖项来获得"所有好东西",如下所示:

<dependency>
    <groupId>org.seleniumhq.selenium</groupId>
    <artifactId>selenium-java</artifactId>
    <version>2.46.0</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)

*将此问题作为一个问题包括答案,因为我花了太多时间和运气来绊倒答案.