Подтвердить что ты не робот

Geckodriver.exe не в текущей директории или переменной пути, Selenium 2.53.1 + Firefox 48 + Selenium 3 Beta

Увидели много вопросов относительно Selenium 2.53.1 и Firefox 47.0.1, но ни одного в отношении выпуска Selenium 3 Beta. Я пытаюсь использовать новые gecko/marionette Firefox webdrivers, но даже если у меня есть место водителя; мой путь к среде, Firefox установить папку в программах и предоставить местоположение диска в системной среде, он все равно будет работать неправильно.

Ошибка:

geckodriver.exe не существует в текущем каталоге или в каталоге переменной среды PATH. Драйвер можно загрузить с https://github.com/mozilla/geckodriver/releases.

Использование:

  • Сервер Selenium 2.53.1
  • Firefox 48
  • Selenium 3 Beta DLL
  • Окно 10

Пример кода 1

    using OpenQA.Selenium.Firefox;

    public static class FirefoxInitialise
    {
         public static IWebDriver Driver {get; set;}

         Driver = new FirefoxDriver();
    }

Также попытался выполнить следующее:

    using OpenQA.Selenium.Firefox;

    public static class FirefoxInitialise
    {
         public static IWebDriver Driver {get; set;}

         FirefoxDriverServices service = FirefoxDriverService.CreateDefaultService();
         service.FirefoxBinaryPath = @"C:\Program Files\Mozilla Firefox\firefox.exe";
         FirefoxOptions options = new FirefoxOptions();
         TimeSpan time = TimeSpan.FromSeconds(10);
         Driver = new FirefoxDriver(service, options, time);
    }

Любая помощь или проницательность относительно того, почему код все еще не обнаружит этот драйвер, будет очень благодарен.

4b9b3361

Ответ 1

Попробуйте поместить geckodriver.exe в свой путь: C:\Users\YourName\Documents\Visual Studio 2013\Projects\seleniump\seleniump\bin\Debug

вы можете найти geckodriver.exe по этой ссылке:

https://github.com/mozilla/geckodriver/releases

Ответ 2

Установите Selenium.Firefox.Webdriver пакет NuGet.

Это скопирует файл geckodriver.exe в папку bin.

Ответ 3

Это решение может помочь вам исправить проблему: (Это действительно помогло мне)

public class TestResult {

    private IWebDriver driver;
    private StringBuilder verificationErrors;
    private string baseURL;
    private bool acceptNextAlert = true;

    [TestInitialize]
    public void SetupTest() {
        FirefoxDriverService service = FirefoxDriverService.CreateDefaultService(@"C:\geckodriver", "geckodriver.exe");
        service.Port = 64444;
        service.FirefoxBinaryPath = @"C:\Program Files (x86)\Firefox Developer Edition\firefox.exe";
        driver = new FirefoxDriver(service);
        baseURL = "http://localhost:49539";
        verificationErrors = new StringBuilder();
    }
}
СПРАВКА

Ответ 4

Если u включает geckodriver.exe в ваш проект, и вы копируете его в целевой каталог при компиляции, webdriver работает так же, как в предыдущих версиях.

Ответ 5

Это для тех, кто из начинающих плохо пишет короткую версию ниже, после этого сообщения:) Самый простой способ сначала загрузить все драйверы, какой браузер вы используете, и извлечь все драйверы, например. C:\Selenium\ и перейдите к VisualStudio и отсюда добавьте Selenium packages, показанный на фотографиях Нажмите здесь в консоли, напишите этот код PM> Install-Package Selenium.WebDriver после этого скопируйте каталог драйверов и из переменных окна поиска в Windows и выберите (Изменить системную среду и переменные) shown pic2, в этом окне у вас будет расширенная вкладка под кликом Переменные окружения... здесь у вас есть System variables раздел PATH or Path Переменная и отредактируйте ее осторожно don't delete it!! next click new - вставьте каталог драйверов и нажмите все кнопки ОК. перезапустите программу VS и запустите ее. После этого вам не нужно добавлять путь к директории в свой конструктор, например

IWebDriver driver2 = new InternetExplorerDriver(@"C:\Selenium"); 

Еще одна вещь не забудьте импортировать файлы.

using OpenQA.Selenium;
using OpenQA.Selenium.Firefox;
using OpenQA.Selenium.IE;

Для более продвинутых ИТ-ребята.

  • Добавить в папку "Путь к окружающей среде" Ваш каталог драйверов.
  • VisualStudio установите Selenium с помощью диспетчера пакетов NuGet в консольном режиме или как вам понравится.

    PM > Установить пакет Selenium.WebDriver

  • перезапустить VS.

Ответ 6

Если у вас есть исполняемый файл в переменной среды пути, это, вероятно, означает, что у него нет доступа к нему. В качестве обходного пути попробуйте запустить Visual Studio в качестве администратора.

Или вы можете переместить его куда-нибудь, чтобы иметь разрешение. Например:

var service = FirefoxDriverService.CreateDefaultService(@"D:\tmp\Binaries");
service.FirefoxBinaryPath = FirefoxBinary;

var options = new FirefoxOptions();
options.SetPreference("browser.private.browsing.autostart", true);

_driver = new FirefoxDriver(service, options, TimeSpan.FromSeconds(30));

Там я поместил двоичные файлы в D:\tmp\Binaries\ и указал его в коде, чтобы проверить там geckodriver.

Ответ 7

Я продолжал получать эту ошибку и единственное, что я мог сделать, чтобы, наконец, исправить ее (не уверен, что это лучший ответ для всех, у кого есть эта проблема), я поместил geckodriver.exe в свою основную библиотечную директорию, затем я открыт webdriver.py:

/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/selenium/webdriver/firefox/webdriver.py

нашел строку, где говорится: executable_path="geckodriver", firefox_options=None,

и изменил его на:

executable_path="/Library/geckodriver", firefox_options=None

Ответ 8

У меня была проблема с Visual Studio 2017, когда сборка завершилась неудачно, потому что она искала в существующем каталоге для geckodriver exec. Я также добавил его с помощью nuget pack manager. То, что я нашел, было в Visual Studio- > Project- > Properties- > Build it, если вы сделаете сборку независимой от архитектуры: целевой платформой является любой процессор и либо оставить другие флажки (Предпочитаете 32-разрядный, разрешить небезопасный код, Оптимизируйте код), все флажки отмечены флажком или имеют только привилегированный 32-битный флажок (который по умолчанию используется в моей системе). btw: мое приложение было консольным приложением .NET Framework 4.5.2

Ответ 9

Я бы попробовал это:

  • Сначала убедитесь, что ваш проект С# работает с той же версией платформы .NET, что и библиотеки клиентских драйверов (при загрузке из Selenium HQ вы должны увидеть версию фреймворка, на которой они основаны). У меня есть 3.5 и 4.0 по состоянию на 9/15/2017, поэтому мне пришлось понизить мой проект С# до .NET 4.0, чтобы использовать библиотеки клиентских драйверов 4.0.

  • В вашем коде при создании службы драйверов Firefox убедитесь, что вы явно указали путь к месту нахождения вашего geckodriver.exe. Посмотрите, как я добавил параметр пути к вашему вызову FirefoxDriverService.CreateDefaultService:

    using OpenQA.Selenium.Firefox;
    
    public static class FirefoxInitialise
    {
      public static IWebDriver Driver {get; set;}
    
      // I'm assuming your geckodriver.exe is located there:
      // @"C:\MyGeckoDriverExePath\geckodriver.exe"
      FirefoxDriverService service = FirefoxDriverService.CreateDefaultService(@"C:\MyGeckoDriverExePath\");
      service.FirefoxBinaryPath = @"C:\Program Files\Mozilla Firefox\firefox.exe"; // May not be necessary
      FirefoxOptions options = new FirefoxOptions();
      TimeSpan time = TimeSpan.FromSeconds(10);
      Driver = new FirefoxDriver(service, options, time);
    }