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

时间:2018-06-07 10:58:19

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

我将一些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-project(TDD)
  • NUnit项目(TDD.Tests),带有参考TDD

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

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

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

版本: Versions

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

提前致谢!

1 个答案:

答案 0 :(得分: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远程服务器,例如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文档,显示以下HtmlUnit 不是的层次结构本

OpenQA.Selenium.Remote.RemoteWebDriver

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

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

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

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

TL; DR