首页 > 解决方案 > Selenium - OSError: [WinError 6] 句柄无效

问题描述

我试图让我的自动 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()

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

标签: pythonpython-3.xselenium-chromedriver

解决方案


如果您来到这里想知道为什么这个错误出现在您的tearDown(self)方法上,那可能是因为您使用driver.close()的是driver.quit().

您可以参考此线程(此处)以了解两者之间的区别,但总结一下:driver.close()关闭选项卡/窗口但不关闭驱动程序实例,而driver.quit()后者则关闭。

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


推荐阅读