Selenium - OSError:[WinError 6] 句柄无效

问题描述 投票:0回答:3

我试图让自动 chrome 窗口保持打开状态,但它们因以下错误而关闭:

Traceback (most recent call last):
  File "C:\Users\Duma\AppData\Local\Programs\Python\Python37-32\lib\subprocess.py", line 841, in __del__
    self._internal_poll(_deadstate=_maxsize)
  File "C:\Users\Duma\AppData\Local\Programs\Python\Python37-32\lib\subprocess.py", line 1193, in _internal_poll
    if _WaitForSingleObject(self._handle, 0) == _WAIT_OBJECT_0:
OSError: [WinError 6] The handle is invalid

使用 Selenium 和我的 Python 脚本 看起来像这样:

login_url='https://www.life4laptop.com/index.php?route=account/login'
url='https://www.life4laptop.com/index.php?route=product/search&search=samsung'
list=[]
driver=webdriver.Chrome(crm_path, chrome_options=options)
driver.get(login_url)
elem = driver.find_element_by_id("input-email")
elem.clear()
elem.send_keys(x['life4laptop']['username'])
elem = driver.find_element_by_id("input-password")
elem.clear()
elem.send_keys(x['life4laptop']['password'])
elem = driver.find_element_by_xpath("//form/input[@type='submit']")
elem.click()
driver.get(url)

driver2=webdriver.Chrome(crm_path, chrome_options=options)
driver2.get(login_url)
elem = driver2.find_element_by_id("input-email")
elem.clear()
elem.send_keys(x['life4laptop']['username'])
elem = driver2.find_element_by_id("input-password")
elem.clear()
elem.send_keys(x['life4laptop']['password'])
elem = driver2.find_element_by_xpath("//form/input[@type='submit']")
elem.click()
driver2.get(url)
#driver.close()
#driver.quit()

任何线索为什么,以及如何让它工作

python python-3.x selenium-chromedriver
3个回答
7
投票

如果您来到这里想知道为什么此错误出现在您的

tearDown(self)
方法上,可能是因为您使用的是
driver.close()
而不是
driver.quit()

您可以参考此线程(here)来了解两者之间差异的解释,但总结一下:

driver.close()
关闭选项卡/窗口,但不关闭驱动程序实例,而
driver.quit()
则关闭后者。

希望它可以帮助其他人在这里寻找这个问题的答案。


1
投票

可能是因为我退出了剧本。当脚本有争议地运行时,没关系。


0
投票

这可能与 Python 中的 bug 有关。它至少在 3.7.7+ 中已经打了补丁,所以你可能只需要升级 Python。

另请参阅https://github.com/Zulko/moviepy/issues/1026#issuecomment-624519852

© www.soinside.com 2019 - 2024. All rights reserved.