我试图让自动 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()
任何线索为什么,以及如何让它工作?
如果您来到这里想知道为什么此错误出现在您的
tearDown(self)
方法上,可能是因为您使用的是 driver.close()
而不是 driver.quit()
。
您可以参考此线程(here)来了解两者之间差异的解释,但总结一下:
driver.close()
关闭选项卡/窗口,但不关闭驱动程序实例,而driver.quit()
则关闭后者。
希望它可以帮助其他人在这里寻找这个问题的答案。
可能是因为我退出了剧本。当脚本有争议地运行时,没关系。
这可能与 Python 中的 bug 有关。它至少在 3.7.7+ 中已经打了补丁,所以你可能只需要升级 Python。
另请参阅https://github.com/Zulko/moviepy/issues/1026#issuecomment-624519852