簡體   English   中英

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

[英]Cannot find WebDriverWait class in OpenQA.Selenium (C#)

(從 Java-Selenium 遷移到 C#-Selenium)

在使用 Selenium 和 C# 搜索顯式等待時,我發現有幾篇文章的代碼看起來類似於 Java-Counterpart:

例如這里

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 Support Classes 的單獨包中

但:
當我嘗試在 Visual Studio 中自己編寫代碼(通過 NuGet 獲取 Selenium 包)時,在我的代碼中使用WebDriverWait將提示消息:

找不到類型或命名空間名稱“WebDriverWait”(您是否缺少 using 指令或程序集引用?)

即使我通過

using OpenQA.Selenium;

在查找WebDriverWait文檔時,您會發現,應該有一個名為

OpenQA.Selenium.Support.UI

但是我無法通過代碼中的“使用”訪問它。

為什么會發生這種情況? 在哪里可以找到 WebDriverWait 類?

幸運的是,我有時也會閱讀答案的評論,所以我在此處排名最高的評論中偶然發現了解決方案:

WebDriverWait [是] 來自 OpenQA.Selenium.Support.UI 命名空間,並在 NuGet 上名為 Selenium WebDriver Support Classes單獨包中

謝謝@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>

* 將此作為一個包含答案的問題發布,因為我花了太多時間和運氣來絆倒答案。

你試過添加嗎?

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 項目中。 一旦我這樣做並使用上面的說明,它就對我有用。

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")));

Selenium.WebDriver.WaitExtentions。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM