Остановка серверов ASP WebDev и Selenium из командной строки
Я впервые внедряю тесты 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 после завершения моих тестов?
4 ответа
Вот то, что я делаю локально, но также должно работать удаленно с простым запросом http get:
HTTP: // локальный: 4444 / Селен-сервер / водитель / CMD = Shutdown
или для версий Selenium версии 1.0.1:
заменить "shutDown" на "shutDownSeleniumServer"
Джеймс, мне удалось решить проблему запуска / остановки Selenium, применив механизм инициализации и очистки тестовой сборки (см. Остальную часть обсуждения в моем блоге):
[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;
}
Обычно мы оставляем сервер Selenium включенным на наших серверах сборки, это более практично.
В противном случае всегда есть верный старый пскилл. Это большой подход, но он убивает webdevwebserver:-)
Я очень мало знаю о селене, поэтому заранее извиняюсь, если pskill не годится для его прекращения