| 
 | 1 | +Selenium 4.31.0  | 
 | 2 | +* Fix docstring issues that sphinx complains about (#15466)  | 
 | 3 | +    > * Fix docstring errors that sphinx complained about  | 
 | 4 | +    > * Fix parameter type for web_socket_url  | 
 | 5 | +    > * Remove duplicate web_socket_url from BaseOptions  | 
 | 6 | +* bump versions to nightly  | 
 | 7 | +* service: only shutdown if process not terminated (#15183)  | 
 | 8 | +    > * service: only shutdown if process not terminated  | 
 | 9 | +    > There are scenarios where a stop() is called on a Service object  | 
 | 10 | +    > multiple times. This also happens when explicitly quitting a Webdriver using  | 
 | 11 | +    > driver.quit() and afterwards having the garbage collector destroy the service  | 
 | 12 | +    > object, calling stop() another time even though the service process  | 
 | 13 | +    > has already terminated.  | 
 | 14 | +    > The check inside the stop() call only ensured that the process variable  | 
 | 15 | +    > is not None, but ignored the fact that the process might already have  | 
 | 16 | +    > terminated. Therefor an additional check is introduced to only send  | 
 | 17 | +    > the remote shutdown command if the service process has not ended.  | 
 | 18 | +    > Fixes #15182  | 
 | 19 | +    > * service: move process termination to finally block  | 
 | 20 | +    > If a type error or similar occurs during send_remote_shutdown_command,  | 
 | 21 | +    > one should always terminate the service process, even if an exception  | 
 | 22 | +    > is thrown.  | 
 | 23 | +    > Thus moving self._terminate_process() into a finally block.  | 
 | 24 | +* bump versions in preparation for release  | 
 | 25 | + | 
1 | 26 | Selenium 4.31.0  | 
2 | 27 | * Fix docstring issues that sphinx complains about (#15466)  | 
3 | 28 |     > * Fix docstring errors that sphinx complained about  | 
 | 
0 commit comments