2015-09-18 15 views
22

(Chuyển từ Java Selenium đến C# -Selenium)Không thể tìm thấy lớp WebDriverWait trong OpenQA.Selenium (C#)

Khi tìm kiếm chờ đợi rõ ràng với Selenium và C# Tôi tìm thấy một số bài viết với mã trông tương tự như Java-Counterpart:

ví dụ here:

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

hoặc here:

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

WebDriverWait là từ không gian tên OpenQA.Selenium.Support.UI và đi kèm trong một gói riêng biệt gọi là Selenium WebDriver Hỗ trợ Lớp học

NHƯNG:
Khi tôi cố gắng mã này bản thân mình trong Visual Studio (nhận gói selen qua NuGet), sử dụng WebDriverWait trong mã của tôi sẽ nhắc nhở người thông điệp:

loại hoặc namespace tên 'WebDriverWait' không thể được tìm thấy (là bạn thiếu một chỉ thị sử dụng hoặc một hội đồng tham khảo ence?)

Mặc dù tôi bao gồm các tài liệu tham khảo Selenium qua

using OpenQA.Selenium; 

Khi nhìn lên documentation for WebDriverWait bạn sẽ tìm thấy, mà cần có một không gian tên gọi là

OpenQA.Selenium .Support.UI

Nhưng tôi không thể truy cập thông qua "sử dụng" trong mã của tôi.

Tại sao điều này xảy ra? Tôi có thể tìm lớp WebDriverWait ở đâu?

Trả lời

50

May mắn đôi khi tôi đọc những ý kiến ​​cho câu trả lời là tốt, vì vậy tôi tình cờ giải pháp trong nhận xét đó xếp hạng cao nhất here:

WebDriverWait [là] từ namespace OpenQA.Selenium.Support.UI và đi kèm trong một gói riêng biệt gọi là Lớp học Selenium WebDriver Hỗ trợ trên NuGet

Cảm ơn @Ved!

Trong Visual Studio điều này có nghĩa rằng bạn cần phải cài đặt hai gói:

  • NuGet gói "Selenium.WebDriver" VÀ CŨNG
  • NuGet gói "Selenium.Hỗ trợ "

Đến từ Java với Maven, đây không phải là tầm thường (ít nhất với tôi ;-), bởi vì cho đến bây giờ tôi chỉ cần bao gồm một và chỉ một phụ thuộc để có được" tất cả những thứ tốt " như thế này:

<dependency> 
    <groupId>org.seleniumhq.selenium</groupId> 
    <artifactId>selenium-java</artifactId> 
    <version>2.46.0</version> 
</dependency> 

* văn này như một câu hỏi trong đó có câu trả lời vì nó chi phí cho tôi quá nhiều thời gian và may mắn cho vấp ngã trên câu trả lời

+0

Bạn đã tải xuống gói C# /. Net trên trang web Selenium chưa? Nên có 4 DLL trong đó. Nếu bạn thêm một tham chiếu đến tất cả 4 trong số họ, bạn nên được tốt. Đó là tất cả những gì tôi làm và nó phù hợp với tôi. Tôi không bao giờ sử dụng NuGet. – JeffC

+0

@ JeffC no, tôi đã sử dụng NuGet - thx cho gợi ý, sẽ cập nhật câu hỏi của tôi! – drkthng

+0

Bạn nên chấp nhận câu trả lời của riêng bạn, vì bạn biết nó hoạt động. Làm cho nó rõ ràng hơn cho những người đọc câu hỏi này cố gắng tìm một giải pháp cho chính họ. –

2

các bạn đã thử thêm

using OpenQA.Selenium.Support.UI; 
.?

Đó phải là tất cả những gì bạn cần. Tùy thuộc vào IDE của bạn, có khả năng (?) Sẽ có một trình trợ giúp tìm và thêm các tham chiếu bị thiếu. Tôi sử dụng Visual Studio. Tôi chỉ cần gõ những gì tôi biết nên ở đó. Khi IDE đặt squiggles đỏ trên WebDriverWait, tôi di chuột qua nó và nó cho thấy một chú giải công cụ nói rằng tôi đang thiếu một tham chiếu và tôi nhấp vào liên kết, Hiển thị các bản sửa lỗi tiềm năng. Trong chú giải công cụ mới, nó hiển thị một số tùy chọn, thường là tùy chọn đầu tiên là thêm câu lệnh using. Tôi bấm vào cái đó và những vệt màu đỏ biến mất.

Tôi thực sự thích Visual Studio nhưng tôi đã sử dụng Eclipse trong 9 tháng qua và tôi thích cách Eclipse xử lý việc này. Tôi nghĩ nó trực quan hơn ... nhưng đó chỉ là tôi.


EDIT

Chỉ muốn làm rõ ràng cho độc giả tương lai ... Tôi không sử dụng NuGet. Tôi chỉ cần tải về các gói Selenium. Net và thả 4 DLL trong/gần dự án của tôi và sau đó thêm tài liệu tham khảo cho tất cả 4 người trong số họ để dự án Visual Studio của tôi. Một khi tôi làm điều đó và sử dụng các hướng dẫn ở trên, nó hoạt động cho tôi.

+0

không có điều này không hoạt động, khi bạn sử dụng NuGet -> bạn tìm kiếm Selenium và thêm gói đầu tiên xuất hiện, đó là Selenium. WebDriver và điều này không bao gồm các lớp Hỗ trợ, đó là lý do tại sao như trong câu trả lời của tôi, bạn cần tải một Gói NuGet khác có tên là "Hỗ trợ Selenium" – drkthng

+0

Tôi đã thêm hướng dẫn bổ sung cho cách cài đặt gói Selenium .Net kể từ khi tôi không sử dụng NuGet từ cuộc trò chuyện của chúng tôi dưới đây để rõ ràng ... – JeffC

+0

vâng, không có NuGet tôi nghĩ rằng một cái được sử dụng để thêm các tham chiếu "nhiều", nhưng sử dụng NuGet, giống như với Maven, bạn thường chỉ thêm MỘT phụ thuộc/gói rất thuận tiện. Vì vậy, thuận tiện và được sử dụng để tôi không thể tìm thấy giải pháp tại sao tôi không thể truy cập WebDriverWait ;-) – drkthng

0

Selenium.WebDriver.WaitExtentions.

+0

https://github.com/SeleniumHQ/selenium/issues/4864 –

+0

Trình điều khiển IWebDriver = new ChromeDriver(); driver.Manage(). Timeouts(). ImplicitlyWait (TimeSpan.FromSecound (1)); driver.FindElement (By.Id ("Đăng nhập")); –

Các vấn đề liên quan