System.InvalidOperationException:无法创建新服务:在本地计算机上使用 ChromeDriver 和 SeleniumGrid 的 ChromeDriverService

System.InvalidOperationException : Unable to create new service: ChromeDriverService with ChromeDriver and SeleniumGrid on local machine

我已经在 Windows 10 上运行的本地计算机上设置了 Selenium Grid(集线器和节点),使用以下命令注册集线器。

java -jar selenium-server-standalone-3.141.59.jar -role hub

为了注册一个节点,我使用了下面的命令

java -jar selenium-server-standalone-3.141.59.jar -role node -hub http://10.37.34.2:4444/grid/register -port 5454

在命令提示符下,显示"The node is registered to the hub and ready to use"

也在 http://localhost:4444/grid/console 处验证了网格控制台。 一切看起来都很好。

当我在 visual studio 中执行一个简单的测试用例时,我看到了以下错误消息。

结果消息:

System.InvalidOperationException : Unable to create new service: ChromeDriverService
Build info: version: '3.141.59', revision: 'e82be7d358', time: '2018-11-14T08:25:53'
System info: host: 'PCD-F3FD2', ip: '10.37.34.2', os.name: 'Windows 10', os.arch: 'x86', os.version: '10.0', java.version: '1.8.0_172'
Driver info: driver.version: unknown (SessionNotCreated)

在集线器命令提示符上,我可以看到

"20:47:46.539 INFO [RequestHandler.process] - Got a request to create a new session: Capabilities {browserName: chrome, goog:chromeOptions: {}, platformName: windows}
20:47:46.542 INFO [TestSlot.getNewSession] - Trying to create a new session on test slot {server:CONFIG_UUID=0c4146b1-d7d9-4f39-91ce-b30c57c53342, seleniumProtocol=WebDriver, browserName=chrome, maxInstances=5, platformName=WIN10, platform=WIN10}"

在节点命令提示符上,我可以看到

20:47:46.601 INFO [ActiveSessionFactory.apply] - Capabilities are: {
"browserName": "chrome",
"goog:chromeOptions": {
},
"platformName": "windows"}


20:47:46.602 INFO [ActiveSessionFactory.lambda$apply] - Matched factory org.openqa.selenium.grid.session.remote.ServicedSession$Factory (provider: org.openqa.selenium.chrome.ChromeDriverService)

下面是我的 C# 代码:

[Test]
    public void AccessGoogle()
    {

        ChromeOptions options = new ChromeOptions();
        options.BinaryLocation = @"C:\Program Files (x86)\Google\Chrome\Application\chrome.exe";
        options.PlatformName = PlatformType.Windows.ToString();

        IWebDriver d = new RemoteWebDriver(new Uri("http://10.37.34.2:4444/wd/hub"), options.ToCapabilities());

        d.Manage().Timeouts().ImplicitWait = TimeSpan.FromSeconds(30);

        d.Url = "https://www.google.com/";
    }

你能帮我弄清楚哪里出了问题吗?

我也调整了我的机器防火墙设置。但是运气不好!

因为您已经在本地计算机上设置了 Selenium Grid(集线器和节点),所以在初始化 Selenium Grid 节点时您需要通过 Dwebdriver.chrome.driver 参数传递 ChromeDriver 位置的 绝对路径 作为如下:

java -Dwebdriver.chrome.driver=C:\path\to\chromedriver.exe -jar selenium-server-standalone-3.141.59.jar -role node -hub http://10.37.34.2:4444/grid/register -port 5454