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

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

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

例如这里 :

WebDriverWait wait = new WebDriverWait(driver, new TimeSpan(0,0,5)); wait.Until(By.Id("login")); 

或者在这里 :

 WebDriverWait wait = new WebDriverWait(driver, 30); wait.until(ExpectedConditions.visibilityOfElementLocated(By.id("locator"))); 

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

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

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

即使我通过包括Selenium参考

 using OpenQA.Selenium; 

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

OpenQA.Selenium.Support.UI

但我无法通过代码中的“使用”访问它。

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

幸运的是,我有时也会将评论读到答案中,所以我偶然发现了排名最高的评论中的解决方案:

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

谢谢@Ved!

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

  • NuGet包“ Selenium.WebDriver ”还有
  • NuGet包“ Selenium.Support

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

  org.seleniumhq.selenium selenium-java 2.46.0  

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

你尝试过添加吗?

 using OpenQA.Selenium.Support.UI; 

这应该就是你所需要的。 根据您的IDE,它可能(?)将有一个帮助程序,可以找到并添加缺少的引用。 我使用Visual Studio。 我只需键入我知道应该存在的内容。 当IDE在WebDriverWait上放置红色波形时,我将鼠标hover在它上面并显示一个工具提示,表示我缺少一个引用,然后单击链接,显示可能的修复程序。 在新的工具提示中,它显示了几个选项,通常第一个是添加using语句。 我点击那一个,红色的波浪线消失了。

我非常喜欢Visual Studio,但在过去的9个月左右我一直在使用Eclipse,我更喜欢Eclipse处理它的方式。 我觉得它更直观……但那只是我。


编辑

只是想明确未来的读者…我不使用NuGet。 我只需下载Selenium .Net软件包并将4个DLL放入我的项目中/附近,然后将所有4个DLL的引用添加到我的Visual Studio项目中。 一旦我这样做并使用上面的说明,它对我有用。

Selenium.WebDriver.WaitExtentions。