Невозможно создать новый сервис: ChromeDriverService - PullRequest
0 голосов
/ 25 февраля 2019

Я установил Selenium Standalone по всему миру:

npm install selenium-standalone -g
selenium-standalone install --singleDriverInstall=chrome

Я также подделал код с этой страницы в этот тест ядра Dotnet / XUnit:

using System.Threading;
using System;
using Xunit;
using OpenQA.Selenium;
using OpenQA.Selenium.Remote;
using OpenQA.Selenium.Chrome;
using System.Diagnostics;

namespace XunitTestLib.Unit
{
    public class BasicBrowserTest : IDisposable
    {
        public Process _process;
        public IWebDriver Browser { get; }

        public BasicBrowserTest()
        {
            _process = new Process()
            {
                StartInfo = new ProcessStartInfo
                {
                    FileName = "selenium-standalone",
                    Arguments = "start --drivers=chrome",
                    UseShellExecute = true
                }
            };
            _process.Start();

            var options = new ChromeOptions();
            // options.AddArgument("--headless");
            options.AddArgument("--disable-gpu");
            options.AddArgument("--no-sandbox");
            options.AddArgument("--ignore-certificate-errors");
            options.AddArgument("--allow-insecure-localhost");
            options.AddArgument("--acceptInsecureCerts=true");
            options.AddArgument("--proxy-server='direct://'");
            options.AddArgument("--proxy-bypass-list=*");
            options.SetLoggingPreference(OpenQA.Selenium.LogType.Browser, LogLevel.All);

            Thread.Sleep(4000);
            Browser = new RemoteWebDriver(options);
        }

        public void Dispose()
        {
            Browser.Dispose();
            _process.CloseMainWindow();
        }
    }
}

Я пытаюсь запустить автономный селен с помощью ChromeDriver, чтобы я мог установить драйвер браузера для проведения тестирования браузера.

Я не принимаю собственное веб-приложение - это только тестовый запусктестирует сайт, который уже запущен.

Спящий режим позволяет селену запускаться в процессе оболочки.

Однако я получаю этот вывод при запуске с dotnet test --filter DisplayName="Homepage":

[xUnit.net 00:00:04.88]     Homepage [FAIL]
Failed   Homepage
Error Message:
 System.InvalidOperationException : Unable to create new service: ChromeDriverService
Build info: version: '3.141.0', revision: '2ecb7d9a', time: '2018-10-31T20:22:52'
System info: host: 'horacepc', ip: '191.191.191.1', os.name: 'Windows 10', os.arch: 'amd64', os.version: '10.0', java.version: '1.8.0_201'
Driver info: driver.version: unknown (SessionNotCreated)
Stack Trace:
   at OpenQA.Selenium.Remote.RemoteWebDriver.UnpackAndThrowOnError(Response errorResponse)
   at OpenQA.Selenium.Remote.RemoteWebDriver.Execute(String driverCommandToExecute, Dictionary`2 parameters)
   at OpenQA.Selenium.Remote.RemoteWebDriver.StartSession(ICapabilities desiredCapabilities)
   at OpenQA.Selenium.Remote.RemoteWebDriver..ctor(ICommandExecutor commandExecutor, ICapabilities desiredCapabilities)
   at OpenQA.Selenium.Remote.RemoteWebDriver..ctor(Uri remoteAddress, ICapabilities desiredCapabilities, TimeSpan commandTimeout)
   at OpenQA.Selenium.Remote.RemoteWebDriver..ctor(Uri remoteAddress, ICapabilities desiredCapabilities)
   at OpenQA.Selenium.Remote.RemoteWebDriver..ctor(ICapabilities desiredCapabilities)
   at OpenQA.Selenium.Remote.RemoteWebDriver..ctor(DriverOptions options)
   at XunitTestLib.Unit.BasicBrowserTest..ctor() in C:\git\core\XunitTestLib\Unit\BasicBrowserTest.cs:line 46

Total tests: 1. Passed: 0. Failed: 1. Skipped: 0.
Test Run Failed.

Строка, на которую указывает ошибка, это строка: Browser = new RemoteWebDriver(options);

Насколько я понимаю, ChromeDriver пытается подключиться к селену через соединение HTTP, но не запускается / не инициализируется.

Я не понимаю, почему он терпит неудачу.

Ответы [ 2 ]

0 голосов
/ 26 февраля 2019

Ответ включает в себя обязательный список пакетов NuGet. сообщение в блоге Скотта Хансельмана документирует это:

dotnet add package "Selenium.Support"
dotnet add package "Selenium.WebDriver"

Этот третий пакет необходим для работы кода в посте выше:

dotnet add package "Selenium.WebDriver.ChromeDrive"
0 голосов
/ 25 февраля 2019

Это не отвечает на ваш вопрос об использовании selenium-standalone, но, по моему опыту, это может быть ненужным, если вы просто хотите запустить их на локальном компьютере.

Вместо этого, если вы загружаете Chromedriverиз http://chromedriver.chromium.org/downloads, а затем вместо new Process вы можете сделать:

var driverPath = "C:\\MyWebDrivers";
var driverExecutableFileName = "chromedriver.exe";
var options = <whateveryouhadabove>;

using (var service = ChromeDriverService.CreateDefaultService(driverPath, driverExecutableFileName))
{
    using (var driver = new RemoteWebDriver(service.ServiceUrl, options.ToCapabilities()))
    {
        // control chrome here!
    }
}

За кулисами ChromeDriverService.CreateDefaultService будет создавать интерфейс, совместимый с веб-драйвером, через chromedriver.exe.

...