5

Tôi đã thêm gói gói WebDriver.ChromeDriver vào giải pháp của mình, chứa tệp ChromeDriver.exe, bắt buộc đối với Selenium WebDriver để chạy thử nghiệm tự động bằng Chrome. Nhìn vào nội dung gói, nó chỉ chứa các tập tin tập tin sau đây:Gói Selenium WebDriver.ChromeDriver Nuget được cài đặt nhưng không hoạt động đối với MSTest

tools\chromedriver.exe

Điều này là phải làm là thêm thư mục này vào biến môi trường PATH để chromedriver.exe có thể truy cập qua đoạn mã sau (đây là trong một dự án UnitTest sử dụng MSTest):

[TestMethod] 
public void LaunchWebsite_Chrome() 
{ 
    // create ChromeDriver - this should work if chromedriver.exe 
    // is known to the environment PATH variable 
    IWebDriver driver = new ChromeDriver(); 

    driver.Navigate().GoToUrl("http://localhost/"); 
} 

Tuy nhiên, tôi vẫn nhận được những ngoại lệ sau đây:

Tệp chromedriver.exe không tồn tại trong thư mục hiện tại hoặc trong một thư mục trên biến môi trường PATH. Người lái xe có thể tải xuống tại http://code.google.com/p/chromium/downloads/list.

Nhìn vào các tài liệu NuGet, nó cho thấy rằng bất cứ điều gì trong cụ thư mục của gói NuGet sẽ được thêm vào biến môi trường PATH tự động:

http://docs.nuget.org/docs/creating-packages/creating-and-publishing-a-package: Các công cụ thư mục của một gói là dành cho các kịch bản PowerShell và các chương trình có thể truy cập được từ Package Manager Console. Sau khi thư mục được sao chép vào dự án đích, nó được thêm vào biến môi trường `$ env: Path (PATH).

Tuy nhiên, điều này dường như không hoạt động. Tôi thậm chí còn chạy echo %PATH% trên dòng lệnh và nó không hiển thị thư mục công cụ của tôi như đã đăng ký.

Tôi đang làm gì sai?

+0

Bạn có tìm thấy câu trả lời cho câu hỏi này không? – Phphelp

+0

Không thực sự, nhưng tôi nghĩ rằng tôi chỉ hiểu lầm những gì thiết lập các biến môi trường $ env: Path (PATH) có nghĩa là - Tôi đoán nó chỉ được thiết lập trong khi gói đang được cài đặt. Tôi đã sử dụng cách giải quyết được mô tả bởi @Arran –

Trả lời

10

Tôi sẽ không bận tâm với gói NuGet vì điều này, đơn giản vì đây không phải là thư viện lớp - về mặt kỹ thuật, NuGet là gì. ChromeDriver cũng đã được cập nhật nhiều lần kể từ khi phát hành.

Dù sao, tôi sẽ nói rằng tôi vừa làm điều tương tự để xem những gì vấn đề là:

  1. Tải NuGet gói
  2. Sử dụng Visual Studio, thêm một mục mới vào dự án bằng cách right nhấp vào dự án -> Add Item -> hiện có hàng
  3. Navigate và chọn chromedriver.exe
  4. Thay đổi các thuộc tính để đảm bảo "Sao chép vào Output Directory" được thiết lập để Sao chép luôn.

Có thể bạn đang rơi xuống điểm 4. Cài đặt đó được đặt thành Không sao chép theo mặc định.

+2

Thêm tệp thủ công là một công việc tốt xung quanh, nhưng bất kỳ ý tưởng nào tại sao NuGet không thêm thư mục "công cụ" vào biến môi trường PATH? (Tài liệu của nó cho thấy rằng nó nên) –

+0

Tôi tự hỏi nếu Visual Studio có được chạy như là quản trị viên cho các biến đường dẫn để có thể được thiết lập? –

+0

Tôi đã thử điều này - thêm thợ lặn thủ công trong thư mục gốc của dự án, sau khi cài đặt gói NuGet. Kết quả là mỗi khi tôi cố gắng chạy mã, HAI trường hợp của chromedriver.exe đã được bắt đầu. Và sau đó khi tôi cố gắng chạy nó một lần nữa, nó không hoạt động vì chromedriver.exe đã được sử dụng bởi một quá trình khác. Chuyển từ Bản phát hành sang Gỡ lỗi đã hoạt động chính xác, sau đó không bao giờ trở lại. Giải pháp này là tốt nhất flaky, và không nên được chấp nhận như là một câu trả lời imo. –

0

Tôi đặt thành "Sao chép", điều này luôn dẫn đến lỗi khi tôi cố gắng tạo lại. Đặt nó thành "Sao chép nếu mới hơn" hoạt động tốt.

0

Tôi có vấn đề tương tự giải quyết nó bằng những 3 bước

trình điều khiển chrome 1.Goto google trang web chính thức https://sites.google.com/a/chromium.org/chromedriver/downloads tải về và giải nén

2.Goto Visual Studio solution explorer bấm add -> file đã tồn tại - > chọn trình điều khiển chrome

3. Nhấp chuột phải vào trình điều khiển chrome trong VS và chọn các thuộc tính được đặt để luôn sao chép