Selenium .NET HtmlUnitDriver 无法连接到远程服务器

Selenium .NET HtmlUnitDriver failed to connect to remote server

我正在将一些 Selenium JUnit 测试移植到 .NET 项目(针对 MVC 项目的测试)。

我在 Java 中有以下行:

WebDriver driver = new HtmlUnitDriver();

我把它移植到 .NET 是这样的:

IWebDriver driver = new RemoteWebDriver(DesiredCapabilities.HtmlUnit());

在 Java 中,这非常适合测试 Spring 应用程序,但在 .NET 中它会抛出异常:

Test method TDD.Tests.Acceptatie.TestLoginScreen.LoginScreenTest threw exception: 
OpenQA.Selenium.WebDriverException: Unexpected error.       
System.Net.WebException: Can't connect to remote server  --->     
System.Net.Sockets.SocketException: 
Can't connect because target computer actively refused the connection 127.0.0.1:4444

注意:错误消息是从荷兰语翻译而来的,因此可能不是准确的英文消息。

我添加了 Selenium.Webdriver NuGet 包。项目结构如下:

MVC 项目在 localhost:8080 上配置为 运行,我还尝试将 webdriver 设置为该 ip:

IWebDriver driver = new RemoteWebDriver(new Uri("http://localhost:8080"), DesiredCapabilities.HtmlUnit());

我也试过用环回地址代替'localhost'。

版本:

任何人都知道什么可能导致这个问题以及如何解决这个问题?

提前致谢!

调用 RemoteWebDriver Class 的语法如下:

public RemoteWebDriver(Uri remoteAddress, ICapabilities desiredCapabilities)

where:
remoteAddress
    Type: System.Uri
    URI containing the address of the WebDriver remote server (e.g. http://127.0.0.1:4444/wd/hub).

desiredCapabilities
    Type: OpenQA.Selenium.ICapabilities
    An ICapabilities object containing the desired capabilities of the browser.

根据错误...

OpenQA.Selenium.WebDriverException: Unexpected error.       
System.Net.WebException: Can't connect to remote server  --->     
System.Net.Sockets.SocketException: 
Can't connect because target computer actively refused the connection 127.0.0.1:4444

您的 program/script 似乎无法连接到 WebDriver 远程服务器

根据您的第二次代码试验,http://localhost:8080 是您的 Application Server 但不是 WebDriver Remote服务器 例如Selenium Grid Hub。因此您的程序显示错误。如果您使用的是 Selenium Grid,请将行更改为:

IWebDriver driver = new RemoteWebDriver(new Uri("http://127.0.0.1:4444/wd/hub"), DesiredCapabilities.HtmlUnit());

最后,快速浏览 API 文档 of Inheritance Hierarchy of OpenQA.Selenium.Remote.RemoteWebDriver 显示以下内容HtmlUnit 不存在的层次结构:


然而,根据讨论 Is there an HtmlUnitDriver for .NET?,您的第一次代码试用应该已经成功:

IWebDriver driver = new RemoteWebDriver(DesiredCapabilities.HtmlUnit());

如果您想使用 Firefox 实现,您可以:

IWebDriver driver = new RemoteWebDriver(DesiredCapabilities.HtmlUnitWithJavaScript());

TL;DR