CrossBrowser Testing: ChromeDriver Window Hangs after Test
I have been doing some coded UI testing and running tests using Chrome (via the Selenium components). However, I noticed that when my test completed successfully, the Selenium (ChromeDriver) window stayed open and never terminated. Here’s a code snippet of my original code:
[TestMethod]
public void TestTimesheetIsDeployedChrome()
{
BrowserWindow.CurrentBrowser = "chrome";
var testUrl = ConfigurationManager.AppSettings["TimesheetUrl"];
Assert.IsFalse(string.IsNullOrEmpty(testUrl), "Could not find testUrl in App Settings");
var window = BrowserWindow.Launch(testUrl);
UIMap.Login();
UIMap.ValidateLogonSuccess();
// ...
UIMap.LogOff();
UIMap.ValidateLogoffSucceeded();
window.Close();
}
Pretty straight forward. Except that the call to “window.Close();” closed the browser, but not the ChromeDriver command window – so the test never terminated.
So even though the test passes, I have to manually close the command window before the test run itself terminates.
After playing around a bit, I came up with this code to kill the command window (this works for Chrome – haven’t tested it for Firefox). Just replace “window.Close()” with this code:
// kill the process so we don't lock up - for some reason window.Close() locks
window.Process.Kill();
var procs = Process.GetProcesses().Where(p => p.ProcessName.ToLower().Contains("chromedriver"));
foreach (var p in procs)
{
p.Kill();
}
That did it nicely for me (and made my Build-Deploy-Test workflows in my lab terminate correctly).
Happy (cross-browser) testing!