我有一个运行Selenium并进行一些测试的应用程序。 当我独立运行我的代码时,它运行得很好。但是当我多次运行它,同时测试多个东西时,我得到一个错误。
这是我的代码:
chrome_options = Options()
chrome_options.add_argument('--headless')
chrome_options.add_argument('--disable-gpu')
chrome_options.add_argument("window-size=1920,1080")
chrome_options.add_argument("--disable-features=NetworkService")
driver = webdriver.Chrome(ChromeDriverManager().install(), options=chrome_options)
driver.get(URL)
这是错误
files = self.__unpack(file_path)
File "/usr/local/lib/python3.6/dist-packages/webdriver_manager/driver_cache.py", line 99, in __unpack
return extract_zip(path, to_directory)
File "/usr/local/lib/python3.6/dist-packages/webdriver_manager/archive.py", line 7, in extract_zip
archive.extractall(to_directory)
File "/usr/lib/python3.6/zipfile.py", line 1524, in extractall
self._extract_member(zipinfo, path, pwd)
File "/usr/lib/python3.6/zipfile.py", line 1578, in _extract_member
open(targetpath, "wb") as target:
OSError: [Errno 26] Text file busy: '/home/root/.wdm/drivers/chromedriver/80.0.3987.106/linux64/chromedriver'
我的理解是,有一个已经在运行的Chromedriver实例,这是可能的,因为我可以在后台运行此代码。如何处理此错误?
我相信你是对的:当已经有一个 chrome 实例运行时,就会发生错误。
要修复,请先找到运行chrome
的进程。您可以通过包含名称chrome
的搜索过程来执行此操作,如下所示:
pidof chrome
然后你可以像这样杀死他们所有人:
pkill -f chrome
之后重新运行代码不应产生此错误。
我最近遇到了这个错误,我尝试"rsync"将chromedriver复制到新目录,然后将环境变量更新到新路径,它可以工作。