GhostDriver在Selenium测试运行后不退出
本文关键字:退出 测试运行 Selenium GhostDriver | 更新日期: 2023-09-27 18:11:07
在我使用GhostDriver (PhantomJS)对Selenium进行的第一个非常简单的测试中,测试通过了,但PhantomJS.exe没有退出。我在Windows 7上运行,PhantomJS 1.9.0, Selenium WebDriver API 2.32.1和NUnit 2.6.2.12296, . net 3.5。
这是我的c#/Nunit/WebDriver代码:[TestFixture]
public class Driver
{
IWebDriver driver;
[SetUp]
public void Setup()
{
driver = new PhantomJSDriver(@"D:'src'Tests'Drivers");
}
[TearDown]
public void Teardown()
{
driver.Quit();
driver.Dispose();
}
[Test]
public void GoogleSearch()
{
//Navigate to the site
driver.Navigate().GoToUrl("http://www.google.com");
Assert.AreEqual("Google", driver.Title);
}
}
下面是来自PhantomJS的所有内容:
PhantomJS is launching GhostDriver...
[INFO - 2013-04-26T16:38:56.417Z] GhostDriver - Main - running on port 64183
[INFO - 2013-04-26T16:38:56.630Z] Session [c9f2b8e0-ae8f-11e2-a7c1-159b6700bc86
] - CONSTRUCTOR - Desired Capabilities: {"browserName":"phantomjs","version":"",
"platform":"ANY"}
[INFO - 2013-04-26T16:38:56.649Z] Session [c9f2b8e0-ae8f-11e2-a7c1-159b6700bc86
] - CONSTRUCTOR - Negotiated Capabilities: {"browserName":"phantomjs","version":
"1.9.0","driverName":"ghostdriver","driverVersion":"1.0.3","platform":"windows-7
-32bit","javascriptEnabled":true,"takesScreenshot":true,"handlesAlerts":false,"d
atabaseEnabled":false,"locationContextEnabled":false,"applicationCacheEnabled":f
alse,"browserConnectionEnabled":false,"cssSelectorsEnabled":true,"webStorageEnab
led":false,"rotatable":false,"acceptSslCerts":false,"nativeEvents":true,"proxy":
{"proxyType":"direct"}}
[INFO - 2013-04-26T16:38:56.701Z] SessionManagerReqHand - _postNewSessionComman
d - New Session Created: c9f2b8e0-ae8f-11e2-a7c1-159b6700bc86
[INFO - 2013-04-26T16:38:59.470Z] ShutdownReqHand - _handle - About to shutdown
但是它从不关机…什么好主意吗?
[TestFixture]
public class Driver
{
[Start]
public void Start()
{
using (var driver = new PhantomJSDriver(@"D:'src'Tests'Drivers"))
{
driver.Url = "https://www.google.com";
Assert.AreEqual("Google", driver.Title);
}
}
}
这将解决你的问题,只是总是记住封装的东西在使用语句时,你可以或显式调用driver.Dispose();
,如果它是一个公共变量,你可以把处置类的解构器或长那些行,如果你想,当类退出解构器将被调用,并做你的代码行。
使用语句将为您负责清理。
我无法使用完全相同的环境复制此操作。(通过nunit.exe
运行测试)
Windows 7, PhantomJS 1.9.0, Selenium WebDriver API 2.32.1和NUnit. net 3.5.
因为Selenium和PhantomJS都已经升级到更新的版本。我建议你也升级一下你的,看看这个问题是否会再次出现。
硒:selenium-dotnet-2.33.0.zip
PhantomJs: phantomjs-1.9.1-windows.zip
也是一个旁注,我不认为你需要调用Quit()
和Dispose()
,从源代码,这就是Quit()
方法是如何实现的。
/// <summary>
/// Close the Browser and Dispose of WebDriver
/// </summary>
public void Quit()
{
this.Dispose();
}