我是第一次将Selenium测试引入我的构建中。我认为要在NAnt中执行此操作,我必须首先启动WebDev服务器:
<exec program="path/to/WebDev.WebServer.exe"
commandline="/port:51150 /path:path/to/website"
failonerror="true"
resultproperty="selenium.webdev.server.running"
spawn="true">
</exec>
然后启动Selenium服务器:
<exec program="path/to/java.exe"
commandline="-jar path/to/selenium-server.jar"
failonerror="false"
spawn="true">
</exec>
然后运行我的测试。这有效。我无法弄清楚我的测试完成后如何杀死WebDev和Selenium服务器?
答案 0 :(得分:2)
这是我在本地做的事情,但也应该使用简单的http get请求远程工作:
http://localhost:4444/selenium-server/driver/?cmd=shutDown
或者对于1.0版本的Selenium:
将“shutDown”替换为“shutDownSeleniumServer”
答案 1 :(得分:1)
James,我设法通过应用测试程序集初始化和清理机制来解决Selenium启动/停止问题(请参阅我blog上的其余讨论):
[AssemblyFixture]
public class SeleniumTestingSetup : IDisposable
{
[FixtureSetUp]
public void Setup()
{
seleniumServerProcess = new Process();
seleniumServerProcess.StartInfo.FileName = "java";
seleniumServerProcess.StartInfo.Arguments =
"-jar ../../../lib/Selenium/selenium-server/selenium-server.jar -port 6371";
seleniumServerProcess.Start();
}
/// <summary>
/// Performs application-defined tasks associated with freeing, releasing, or
/// resetting unmanaged resources.
/// </summary>
public void Dispose()
{
Dispose(true);
GC.SuppressFinalize(this);
}
/// <summary>
/// Disposes the object.
/// </summary>
/// <param name="disposing">If <code>false</code>, cleans up native resources.
/// If <code>true</code> cleans up both managed and native resources</param>
protected virtual void Dispose(bool disposing)
{
if (false == disposed)
{
if (disposing)
DisposeOfSeleniumServer();
disposed = true;
}
}
private void DisposeOfSeleniumServer()
{
if (seleniumServerProcess != null)
{
try
{
seleniumServerProcess.Kill();
bool result = seleniumServerProcess.WaitForExit(10000);
}
finally
{
seleniumServerProcess.Dispose();
seleniumServerProcess = null;
}
}
}
private bool disposed;
private Process seleniumServerProcess;
}
答案 2 :(得分:0)
我们通常会在构建服务器上一直运行Selenium服务器,这样更实用。
答案 3 :(得分:0)
如果做不到这一点,总会有可靠的旧pskill。这是一个很大的锤子方法,但它可以用来杀死webdevwebserver :-)
我对硒知之甚少,所以如果pskill无法阻止它,请提前道歉