NUnit 安装程序似乎在第一次测试完成后不调用 WebDriver
NUnit Setup seems to not call WebDriver after first test completes
我正在 运行 解决似乎与 webdriver/nunit
有关的问题。
在初始 运行 宁我的第一个测试 [Setup]
和 [Teardown]
工作。当系统尝试 运行 我的下一个测试时,它需要 [Setup]
它似乎并没有调用 WebDriver
。
[SetUp]
//This has to be done for all tests. It is the setup I say!
public void Setup()
{
LaunchBrowser();
driver.Manage().Timeouts().ImplicitlyWait(TimeSpan.FromSeconds(45));
}
[TearDown]
//This has to be done for all tests. It is the teardown I say!
public void TearItDown()
{
driver.Dispose();
}
如果我注释掉 [Teardown]
,我所有的测试 运行 没问题。
LaunchBrowser()
public static IWebDriver driver = new InternetExplorerDriver();
public string landingPage = "http://www.smartdrive.net";
public void LaunchBrowser()
{
driver.Navigate().GoToUrl(landingPage);
}
我已经尝试在上次测试中添加一个 driver.Dispose();
计算我可以在所有测试结束后关闭会话 运行,但它似乎没有成功。
我收到 [Teardown]
的错误
Result Message:
OpenQA.Selenium.WebDriverException : Unexpected error. System.Net.WebException: Unable to connect to the remote server --->
System.Net.Sockets.SocketException: No connection could be made because the target machine actively refused it 127.0.0.1:51089
at System.Net.Sockets.Socket.DoConnect(EndPoint endPointSnapshot, SocketAddress socketAddress)
at System.Net.ServicePoint.ConnectSocketInternal(Boolean connectFailure, Socket s4, Socket s6, Socket& socket, IPAddress& address, ConnectSocketState state, IAsyncResult asyncResult, Exception& exception)
--- End of inner exception stack trace ---
at System.Net.HttpWebRequest.GetRequestStream(TransportContext& context)
at System.Net.HttpWebRequest.GetRequestStream()
at OpenQA.Selenium.Remote.HttpCommandExecutor.Execute(Command commandToExecute)
at OpenQA.Selenium.Remote.DriverServiceCommandExecutor.Execute(Command commandToExecute)
at OpenQA.Selenium.Remote.RemoteWebDriver.Execute(String driverCommandToExecute, Dictionary`2 parameters)
Result StackTrace:
at OpenQA.Selenium.Remote.RemoteWebDriver.UnpackAndThrowOnError(Response errorResponse)
at OpenQA.Selenium.Remote.RemoteWebDriver.Execute(String driverCommandToExecute, Dictionary`2 parameters)
at OpenQA.Selenium.Remote.RemoteWebDriver.FindElement(String mechanism, String value)
at OpenQA.Selenium.By.FindElement(ISearchContext context)
at UnitTestProject1.Browser_Landing.getLandingPlacement() in c:\Users\erikag\Desktop\AutomationTests\VS_NetSeleniumTest\UnitTestProject1\UnitTestProject1\Browser_Landing.cs:line 30
at UnitTestProject1.ServiceConsoleTest.PlacementChk() in c:\Users\erikag\Desktop\AutomationTests\VS_NetSeleniumTest\UnitTestProject1\UnitTestProject1\TestSuite_LandLog.cs:line 46
我确实在某处读到该问题与 webdriver
在 [Teardown]
之后重新启动时出现问题有关,但我似乎无法弄清楚如何解决这个问题。
您在每个 运行 之后处理驱动程序,但没有在每个 运行 之前实例化。所以驱动程序不会按预期工作。在 LaunchBrowser()
方法中实例化驱动程序并重新 运行 测试
更多信息 Dispose()
重置潜水员,因此该实例对于您发布的代码块不再有效。参见 this
而且,最佳做法可能是使用 Quit
而不是 Dispose
,因为 Quit()
会调用 Dispose
并进行更多清理,因此您不必使用Dispose
分别。
并且,随着 LaunchBrowser()
方法的改变应如下所示:
public IWebDriver Driver;
public string landingPage = "http://www.smartdrive.net";
public void LaunchBrowser()
{
driver = new InternetExplorerDriver();
driver.Navigate().GoToUrl(landingPage);
}
我正在 运行 解决似乎与 webdriver/nunit
有关的问题。
在初始 运行 宁我的第一个测试 [Setup]
和 [Teardown]
工作。当系统尝试 运行 我的下一个测试时,它需要 [Setup]
它似乎并没有调用 WebDriver
。
[SetUp]
//This has to be done for all tests. It is the setup I say!
public void Setup()
{
LaunchBrowser();
driver.Manage().Timeouts().ImplicitlyWait(TimeSpan.FromSeconds(45));
}
[TearDown]
//This has to be done for all tests. It is the teardown I say!
public void TearItDown()
{
driver.Dispose();
}
如果我注释掉 [Teardown]
,我所有的测试 运行 没问题。
LaunchBrowser()
public static IWebDriver driver = new InternetExplorerDriver();
public string landingPage = "http://www.smartdrive.net";
public void LaunchBrowser()
{
driver.Navigate().GoToUrl(landingPage);
}
我已经尝试在上次测试中添加一个 driver.Dispose();
计算我可以在所有测试结束后关闭会话 运行,但它似乎没有成功。
我收到 [Teardown]
的错误
Result Message:
OpenQA.Selenium.WebDriverException : Unexpected error. System.Net.WebException: Unable to connect to the remote server --->
System.Net.Sockets.SocketException: No connection could be made because the target machine actively refused it 127.0.0.1:51089
at System.Net.Sockets.Socket.DoConnect(EndPoint endPointSnapshot, SocketAddress socketAddress)
at System.Net.ServicePoint.ConnectSocketInternal(Boolean connectFailure, Socket s4, Socket s6, Socket& socket, IPAddress& address, ConnectSocketState state, IAsyncResult asyncResult, Exception& exception)
--- End of inner exception stack trace ---
at System.Net.HttpWebRequest.GetRequestStream(TransportContext& context)
at System.Net.HttpWebRequest.GetRequestStream()
at OpenQA.Selenium.Remote.HttpCommandExecutor.Execute(Command commandToExecute)
at OpenQA.Selenium.Remote.DriverServiceCommandExecutor.Execute(Command commandToExecute)
at OpenQA.Selenium.Remote.RemoteWebDriver.Execute(String driverCommandToExecute, Dictionary`2 parameters)
Result StackTrace:
at OpenQA.Selenium.Remote.RemoteWebDriver.UnpackAndThrowOnError(Response errorResponse)
at OpenQA.Selenium.Remote.RemoteWebDriver.Execute(String driverCommandToExecute, Dictionary`2 parameters)
at OpenQA.Selenium.Remote.RemoteWebDriver.FindElement(String mechanism, String value)
at OpenQA.Selenium.By.FindElement(ISearchContext context)
at UnitTestProject1.Browser_Landing.getLandingPlacement() in c:\Users\erikag\Desktop\AutomationTests\VS_NetSeleniumTest\UnitTestProject1\UnitTestProject1\Browser_Landing.cs:line 30
at UnitTestProject1.ServiceConsoleTest.PlacementChk() in c:\Users\erikag\Desktop\AutomationTests\VS_NetSeleniumTest\UnitTestProject1\UnitTestProject1\TestSuite_LandLog.cs:line 46
我确实在某处读到该问题与 webdriver
在 [Teardown]
之后重新启动时出现问题有关,但我似乎无法弄清楚如何解决这个问题。
您在每个 运行 之后处理驱动程序,但没有在每个 运行 之前实例化。所以驱动程序不会按预期工作。在 LaunchBrowser()
方法中实例化驱动程序并重新 运行 测试
更多信息 Dispose()
重置潜水员,因此该实例对于您发布的代码块不再有效。参见 this
而且,最佳做法可能是使用 Quit
而不是 Dispose
,因为 Quit()
会调用 Dispose
并进行更多清理,因此您不必使用Dispose
分别。
并且,随着 LaunchBrowser()
方法的改变应如下所示:
public IWebDriver Driver;
public string landingPage = "http://www.smartdrive.net";
public void LaunchBrowser()
{
driver = new InternetExplorerDriver();
driver.Navigate().GoToUrl(landingPage);
}