在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。