【问题标题】:Selenium .NET HtmlUnitDriver failed to connect to remote serverSelenium .NET HtmlUnitDriver 无法连接到远程服务器
【发布时间】:2018-06-07 10:58:18
【问题描述】:

我正在将一些 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 项目 (TDD)
  • 带有对 TDD 的引用的 NUnit 项目 (TDD.Tests)

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

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

我也尝试使用环回地址而不是 'localhost'。

版本:

任何人都知道可能导致此问题的原因以及如何解决此问题?

提前致谢!

【问题讨论】:

  • 请提供您的二进制版本
  • 添加到问题中(如果这就是你的意思?)

标签: .net selenium selenium-webdriver nunit htmlunit-driver


【解决方案1】:

调用RemoteWebDriver类的语法如下:

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

您的程序/脚本似乎无法连接到 WebDriver 远程服务器。

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

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

最后,快速浏览一下OpenQA.Selenium.Remote.RemoteWebDriver 的继承层次结构 的API Docs 会显示以下层次结构,其中HtmlUnit 不存在:


但是,根据Is there an HtmlUnitDriver for .NET? 的讨论,您的第一次代码试用应该有效:

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

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

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

TL;DR

【讨论】:

    猜你喜欢
    • 2010-11-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多