Ответ 1
Попробуйте поместить geckodriver.exe в свой путь: C:\Users\YourName\Documents\Visual Studio 2013\Projects\seleniump\seleniump\bin\Debug
вы можете найти geckodriver.exe по этой ссылке:
Увидели много вопросов относительно 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.
Использование:
Пример кода 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);
}
Любая помощь или проницательность относительно того, почему код все еще не обнаружит этот драйвер, будет очень благодарен.
Попробуйте поместить geckodriver.exe в свой путь: C:\Users\YourName\Documents\Visual Studio 2013\Projects\seleniump\seleniump\bin\Debug
вы можете найти geckodriver.exe по этой ссылке:
Установите Selenium.Firefox.Webdriver пакет NuGet.
Это скопирует файл geckodriver.exe в папку bin.
Это решение может помочь вам исправить проблему: (Это действительно помогло мне)
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();
}
}
СПРАВКА
Если u включает geckodriver.exe в ваш проект, и вы копируете его в целевой каталог при компиляции, webdriver работает так же, как в предыдущих версиях.
Это для тех, кто из начинающих плохо пишет короткую версию ниже, после этого сообщения:)
Самый простой способ сначала загрузить все драйверы, какой браузер вы используете, и извлечь все драйверы, например. 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
Если у вас есть исполняемый файл в переменной среды пути, это, вероятно, означает, что у него нет доступа к нему. В качестве обходного пути попробуйте запустить 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.
Я продолжал получать эту ошибку и единственное, что я мог сделать, чтобы, наконец, исправить ее (не уверен, что это лучший ответ для всех, у кого есть эта проблема), я поместил 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
У меня была проблема с Visual Studio 2017, когда сборка завершилась неудачно, потому что она искала в существующем каталоге для geckodriver exec. Я также добавил его с помощью nuget pack manager. То, что я нашел, было в Visual Studio- > Project- > Properties- > Build it, если вы сделаете сборку независимой от архитектуры: целевой платформой является любой процессор и либо оставить другие флажки (Предпочитаете 32-разрядный, разрешить небезопасный код, Оптимизируйте код), все флажки отмечены флажком или имеют только привилегированный 32-битный флажок (который по умолчанию используется в моей системе). btw: мое приложение было консольным приложением .NET Framework 4.5.2
Я бы попробовал это:
Сначала убедитесь, что ваш проект С# работает с той же версией платформы .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);
}