Это сообщение об ошибке ...
File "C:\Users\radus\AppData\Local\Programs\Python\Python38\lib\subprocess.py", line 945, in __del__
self._internal_poll(_deadstate=_maxsize)
File "C:\Users\radus\AppData\Local\Programs\Python\Python38\lib\subprocess.py", line 1344, in _internal_poll
if _WaitForSingleObject(self._handle, 0) == _WAIT_OBJECT_0:
OSError: [WinError 6] Wrong descriptor
... подразумевает наличие ошибки с командой subprocess.Popen()
.
Согласно обсуждению в Selenium 3.5.0-GeckoDriver 0.18.0- Python 3.6.1: «OSError: [WinError 6] дескриптор недействителен», в то время как close () вызывается через Python PyDev (Eclipse) unittest module эта проблема наблюдалась даже при вызове модулей self.driver.close()
- Python * unittest .
This is because there is no stdin defined in the `service.py` file for the `subprocess.Popen()` command. Underwater the subprocess tries to create a handle which also looks for stdin under Windows this gets a bit tricky when using `Bash` or `cx_Freeze`. So, `stdin` was defined as well, and the crash is gone. Optionally you can also use:
FNULL = open(os.devnull, 'r')
subprocess.Popen(.... ,stdin=FNULL)
Solution
Решение было объединено с Также определите стандартный ввод или оно будет обрабатывать sh при Python + cx_Freeze: WindowsErro… запрос на получение и было доступно в Selenium v3.8.1
В идеале вам нужно убедитесь, что:
- Selenium обновлен до текущих уровней Версия 3.141.59 .
- ChromeDriver обновлен до текущего ChromeDriver v80.0 уровня.
- Chrome обновлен до текущего Chrome версии 80.0 уровня. (согласно примечаниям к выпуску ChromeDriver v80.0 )
- Очистка вашего Рабочего пространства проекта через IDE и Перестройте ваш проект только с необходимыми зависимостями.
- Всегда вызывайте
driver.quit()
в методе tearDown(){}
, чтобы закрыть и уничтожить WebDriver и Веб-клиент экземпляров. изящно.
tl; dr
subprocess.Popen._cleanup () Ошибка "Недопустимый дескриптор", когда какой-то старый процесс завершен