Selenium WebDriver RuntimeException: the process refused to die after 10 seconds and could not complete the task: could not find the executable for: taskkill

public class Second { private WebDriver driver; private boolean acceptNextAlert = true; private StringBuffer verificationErrors = new StringBuffer(); @BeforeClass public void beforeClass() { driver = new FirefoxDriver(); driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS); driver.manage().window().maximize(); } @Test public void testSecond() throws Exception { driver.get("url"); System.out.println("test two"); Thread.sleep(5000); } @AfterClass public void afterClass() throws Exception{ driver.quit(); String verificationErrorString = verificationErrors.toString(); if (!"".equals(verificationErrorString)) { fail(verificationErrorString); } } } 

This is a test example testNG that throws a Runtime Exception in the driver.quit () file. the test was successful, but the browser is not closed after the test is completed
Stack trace:

  FAILED CONFIGURATION: @AfterTest afterClass java.lang.RuntimeException: Process refused to die after 10 seconds, and couldn't taskkill it: Unable to find executable for: taskkill at org.openqa.selenium.os.ProcessUtils.killWinProcess(ProcessUtils.java:142) at org.openqa.selenium.os.ProcessUtils.killProcess(ProcessUtils.java:81) at org.openqa.selenium.os.UnixProcess$SeleniumWatchDog.destroyHarder(UnixProcess.java:248) at org.openqa.selenium.os.UnixProcess$SeleniumWatchDog.access$2(UnixProcess.java:245) at org.openqa.selenium.os.UnixProcess.destroy(UnixProcess.java:124) at org.openqa.selenium.os.CommandLine.destroy(CommandLine.java:153) at org.openqa.selenium.firefox.FirefoxBinary.quit(FirefoxBinary.java:259) at org.openqa.selenium.firefox.internal.NewProfileExtensionConnection.quit(NewProfileExtensionConnection.java:202) at org.openqa.selenium.firefox.FirefoxDriver$LazyCommandExecutor.quit(FirefoxDriver.java:376) at org.openqa.selenium.firefox.FirefoxDriver.stopClient(FirefoxDriver.java:322) at org.openqa.selenium.remote.RemoteWebDriver.quit(RemoteWebDriver.java:477) at testNGTestCase.Second.afterClass(Second.java:54) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:601) at org.testng.internal.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:84) at org.testng.internal.Invoker.invokeConfigurationMethod(Invoker.java:564) at org.testng.internal.Invoker.invokeConfigurations(Invoker.java:213) at org.testng.internal.Invoker.invokeConfigurations(Invoker.java:138) at org.testng.TestRunner.afterRun(TestRunner.java:1014) at org.testng.TestRunner.run(TestRunner.java:621) at org.testng.SuiteRunner.runTest(SuiteRunner.java:334) at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:329) at org.testng.SuiteRunner.privateRun(SuiteRunner.java:291) at org.testng.SuiteRunner.run(SuiteRunner.java:240) at org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:52) at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:86) at org.testng.TestNG.runSuitesSequentially(TestNG.java:1224) at org.testng.TestNG.runSuitesLocally(TestNG.java:1149) at org.testng.TestNG.run(TestNG.java:1057) at org.testng.remote.RemoteTestNG.run(RemoteTestNG.java:111) at org.testng.remote.RemoteTestNG.initAndRun(RemoteTestNG.java:204) at org.testng.remote.RemoteTestNG.main(RemoteTestNG.java:175) Caused by: java.lang.NullPointerException: Unable to find executable for: taskkill at com.google.common.base.Preconditions.checkNotNull(Preconditions.java:250) at org.openqa.selenium.os.UnixProcess.<init>(UnixProcess.java:62) at org.openqa.selenium.os.CommandLine.<init>(CommandLine.java:38) at org.openqa.selenium.os.WindowsUtils.killPID(WindowsUtils.java:172) at org.openqa.selenium.os.ProcessUtils.killWinProcess(ProcessUtils.java:138) 

I gave TcpTimedWaitDelay as 30 seconds.

+6
source share
5 answers

taskkill is a standard Windows utility. The fact that Selenium cannot find it means that the PATH environment variable does not include a directory that contains standard system utilities. This is C: \ Windows \ system32 for modern versions of Windows.

Add this directory to the PATH variable (follow this instruction to change the PATH variable: http://www.computerhope.com/issues/ch000549.htm ) and restart the console or IDE where you run the Selenium scripts to apply this change to the environment.

+11
source

driver.quit(); causes a problem. If you use driver.close(); , this exception will not be thrown, and the browser will be closed properly.

+4
source

I had the same runTimeException , running webdriver on IE 11 and using TestNG.

As a workaround, I used try catch in @AfterSuite and killed the background process:

 public void closeBrowser() { try { driver.close(); Runtime.getRuntime().exec("taskkill /F /IM IEDriverServer.exe"); } catch (Exception anException) { anException.printStackTrace(); } } 

Works as expected so far ...

0
source

@Alexei answer to @Alexei , since the path C:\Windows\system32 is already added to the Windows Path , rebooting my eclipse using Admin privileges worked for me on Windows 10 OS .

0
source

this quit () problem only in MS IE. my workaround with IEDriver.exe and selenium remotewebdriver:

quit () // close the checked window

quit () // quit ie browser

-1
source

Source: https://habr.com/ru/post/988907/


All Articles