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

时间:2015-09-18 11:59:42

标签: c# selenium selenium-webdriver

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

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

例如here

 <script type="text/javascript">
     jQuery( document ).ready(function($) {
      var fadeinBox = $("#box2");
      var fadeoutBox = $("#box1");

    function fade() {
    fadeinBox.stop(true, true).fadeIn(2000);
    fadeoutBox.stop(true, true).fadeOut(2000, function() {
    var temp = fadeinBox;
    fadeinBox = fadeoutBox;
    fadeoutBox = temp;
    setTimeout(fade, 1000);
    });
   }

  fade();
   }); </script>                                

here

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

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

BUT:
当我尝试在Visual Studio中编写代码(通过NuGet获取Selenium包)时,在我的代码中使用WebDriverWait wait = new WebDriverWait(driver, 30); wait.until(ExpectedConditions.visibilityOfElementLocated(By.id("locator"))); 将提示消息:

  

类型或命名空间名称&#39; WebDriverWait&#39;找不到(是你吗?   缺少using指令或程序集引用?)

即使我通过

包含Selenium参考
WebDriverWait

查找documentation for WebDriverWait时会发现,应该有一个名为

的命名空间
  

OpenQA.Selenium.Support.UI

但我无法通过&#34;使用&#34;在我的代码中。

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

4 个答案:

答案 0 :(得分:57)

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

  

WebDriverWait [是]来自OpenQA.Selenium.Support.UI命名空间和   来自一个名为Selenium WebDriver支持类单独包   在NuGet上

谢谢@Ved!

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

  • NuGet包&#34; Selenium.WebDriver &#34;还有
  • NuGet包&#34; Selenium.Support &#34;

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

using OpenQA.Selenium;

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

答案 1 :(得分:3)

您是否尝试过添加?

using OpenQA.Selenium.Support.UI;

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

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

修改

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

答案 2 :(得分:0)

WebDriverWait 在 OpenQA.selenium 中不可用。其可用的 SeleniumExtras.WaitHelpers

    using OpenQA.Selenium;
    using SeleniumExtras.WaitHelpers;
        
    WebDriverWait wait = new WebDriverWait(driver, TimeSpan.FromSeconds(10));
  wait.Until(SeleniumExtras.WaitHelpers.ExpectedConditions.ElementIsVisible(By.Id("Test")));

答案 3 :(得分:-1)

Selenium.WebDriver.WaitExtentions。