Selenium Firefox Marionette Драйвер с .NET С#

Недавно я использовал Selenium (http://www.seleniumhq.org/) в целях тестирования. Он случайно перестал работать, и я полагаю, что это связано с тем, что Selenium WebDriver 2.53.0 больше не совместим с Firefox 47 (компонент WebDriver, который обрабатывает браузеры Firefox (FirefoxDriver), больше не поддерживается).

Marionette ([https://developer.mozilla.org/en-US/docs/Mozilla/QA/Marionette/WebDriver#.NET][2]) — это следующее поколение FirefoxDriver, и я пытался заставить его работать на моей машине, но безуспешно. .

На данный момент я скачал драйвер, переименовал файл в wires.exe и сохранил в корневом каталоге моего веб-сайта. Затем я добавил следующий код:

string strWires = @"Z:\Web_Development\Websites\test\wires.exe";
Environment.SetEnvironmentVariable("webdriver.gecko.driver", strWires);

FirefoxOptions options = new FirefoxOptions();
options.IsMarionette = true;
FirefoxDriver driver = new FirefoxDriver(options);

Однако я получаю следующее сообщение об ошибке:

"Исключение типа "OpenQA.Selenium.DriverServiceNotFoundException" возникло в WebDriver.dll, но не было обработано в пользовательском коде

Дополнительная информация: Файл wires.exe не существует в текущем каталоге или в каталоге, указанном в переменной среды PATH. Драйвер можно загрузить по адресу github.com/jgraham/wires/releases.

Было бы очень признательно, если бы кто-нибудь знал, как заставить драйвер Marionette работать с Selenium (или даже мог бы просто указать мне правильное направление) и мог бы предоставить пошаговые инструкции?

Спасибо,

Даниэль


person Daniel Wainwright    schedule 13.06.2016    source источник
comment
Я получил то же сообщение об ошибке, что и вы, после того, как я загрузил файл в C:/Windows и переименовал его. Когда я разблокировал его, я теперь получаю OpenQA.Selenium.WebDriverException: невозможно запустить службу драйвера на localhost:49426   -  person johnstaveley    schedule 14.06.2016
comment
Если вы поместите wires.exe в путь и запустите его непосредственно в командной строке, вы получите сообщение «Программа не может быть запущена, потому что VCRUNTIME140.dll отсутствует на вашем компьютере». Это доступно здесь: microsoft.com/en-gb/ скачать/details.aspx?id=48145   -  person johnstaveley    schedule 14.06.2016
comment
Однако я сделал это, установил его, и он появляется в C:/Windows/System32, и все равно выдает ту же ошибку. Я даже запускал wires.exe из того же места.   -  person johnstaveley    schedule 14.06.2016
comment
Хорошо, я также установил версию x86 отсюда: microsoft.com/en-gb/download/details.aspx?id=48145. Теперь я могу запустить wires.exe из командной строки, однако, если я запускаю его как часть Selenium, я получаю «System.InvalidOperationException: объект не найден».   -  person johnstaveley    schedule 14.06.2016
comment
Удалось ли вам заставить это работать с Selenium John?   -  person Daniel Wainwright    schedule 15.06.2016
comment
Привет, Даниэль, кажется, это хорошо известная проблема: /questions/37790417/ и stackoverflow.com/questions/37761080/. Однако решение, похоже, представляет собой комбинацию вышеперечисленного и дождаться выхода FF vNext: github.com /seleniumhq/selenium/issues/2110 (читать до конца)   -  person johnstaveley    schedule 15.06.2016
comment
Как указал Габи ниже, они исправили это в следующей версии FF, когда бы она ни вышла.   -  person johnstaveley    schedule 16.06.2016


Ответы (1)


Marionette, кажется, хочет использовать ночную сборку FireFox. Загрузите Geckodriver, переименуйте его в wires.exe, скопируйте в вывод. Это работает для меня (FireFox 47 и Selenium 2.53.0):

var driverService = FirefoxDriverService.CreateDefaultService();
driverService.FirefoxBinaryPath = @"C:\Program Files (x86)\Mozilla Firefox\firefox.exe";
driverService.HideCommandPromptWindow = true;
driverService.SuppressInitialDiagnosticInformation = true;

var driver = new FirefoxDriver(driverService, new FirefoxOptions(), TimeSpan.FromSeconds(60));
person Gabi Nitulescu    schedule 15.06.2016