5

Dodałem pakiet nuget WebDriver.ChromeDriver do mojego rozwiązania, które zawiera plik ChromeDriver.exe, wymagany do uruchomienia Selenium WebDriver zautomatyzowanych testów za pomocą Chrome. Patrząc na zawartość pakietu, to po prostu plik zawiera następujący plik:Pakiet Selenium WebDriver.ChromeDriver Nuget zainstalowany, ale nie działa dla MSTest

tools\chromedriver.exe

Co to jest powinien zrobić, to dodać ten folder do zmiennej środowiskowej PATH tak że chromedriver.exe jest dostępny za pośrednictwem następujący kod (jest to w projekcie unittest użyciem 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/"); 
} 

jednak ja wciąż otrzymuję następujący wyjątek:

Plik chromedriver.exe nie istnieje w bieżącym katalogu lub w katalogu na zmiennej środowiskowej PATH. Sterownik można pobrać pod adresem http://code.google.com/p/chromium/downloads/list.

Patrząc na dokumentacji Nuget sugeruje, że coś w narzędziach folderu pakietu Nuget będą dodawane do zmiennej środowiskowej PATH się automatycznie:

http://docs.nuget.org/docs/creating-packages/creating-and-publishing-a-package: folderze Narzędzia pakietu jest przeznaczony dla skryptów programu Power Shell i programów dostępnych z poziomu konsoli programu Package Manager. Po skopiowaniu folderu do projektu docelowego jest on dodawany do zmiennej środowiskowej `$ env: Path (PATH).

Jednak wydaje się, że to nie działa. Uruchomiłem nawet echo %PATH% w linii poleceń i nie pokazuje on mojego katalogu narzędzi jako zarejestrowany.

Co robię źle?

+0

Znalazłeś odpowiedź na to pytanie? – Phphelp

+0

Niezupełnie, ale myślę, że źle zrozumiałem, jakie ustawienie oznacza zmienna środowiskowa $ env: Path (PATH) - zakładam, że jest ustawiona tylko podczas instalacji pakietu. Użyłem obejścia opisanego przez @Arran –

Odpowiedz

10

Nie zawracałbym sobie głowy pakietem NuGet, ponieważ nie jest to biblioteka klasowa - co technicznie jest tym, o co chodzi w NuGet. ChromeDriver również był aktualizowany wiele razy od tej wersji.

W każdym razie, chciałbym powiedzieć, że po prostu zrobić to samo, aby zobaczyć, co problem jest:

  1. Pobierz pakiet Nuget
  2. pomocą programu Visual Studio, dodać nowy element do projektu przez prawy- kliknięcie na projekcie -> Dodaj element -> Existing Item
  3. Nawiguj i wybierz chromedriver.exe
  4. zmienić właściwości, aby zapewnić "Copy to Output Directory" jest ustawiony na Kopiuj zawsze.

Prawdopodobnie spadasz w punkcie 4. To ustawienie jest ustawione na Nie kopiuj domyślnie.

+2

Ręczne dodanie pliku to dobra robota, ale wszelkie pomysły, dlaczego NuGet nie dodaje folderu "tools" do zmiennej środowiskowej PATH? (Dokumentacja sugeruje, że powinna) –

+0

Zastanawiam się, czy Visual Studio musi być uruchamiane jako administrator, aby zmienne ścieżki mogły być ustawione? –

+0

Próbowałem tego - dodając nurka ręcznie w katalogu głównym projektu, po zainstalowaniu pakietu NuGet. W wyniku tego za każdym razem, gdy próbowałem uruchomić kod, uruchomiono DWWO wystąpień chromeedriver.exe. A potem, kiedy próbowałem uruchomić go ponownie, nie działało, ponieważ chromedriver.exe był w użyciu przez inny proces. Przełączanie z wersji Release na Debugowanie działało dokładnie RAZ, a następnie nigdy więcej. To rozwiązanie jest w najlepszym wypadku niestabilne i NIE powinno być akceptowane jako odpowiedź. –

0

Ustawiłem na "Kopiuj", co zawsze powodowało błąd przy próbie jego odbudowania. Ustawienie go na "Kopiuj, jeśli nowsze" działa poprawnie.

0

miałem podobny problem rozwiązany przez te 3 kroki

1.Goto Google Chrome sterowniki oficjalnej stronie https://sites.google.com/a/chromium.org/chromedriver/downloads pobierania i rozpakować

2.Goto Visual Studio Solution Explorer kliknij przycisk Dodaj -> istniejący plik - > wybierz chrom kierowca

3.Right kliknij chrom kierowcy w VS i wybierz właściwości ustawić go na zawsze kopiować