我正在尝试将一个扩展(Metamask(加载到chrome中,以进行一些自动化操作。它在我的游戏级装备上运行得很好,但我的笔记本电脑和技术过时的家庭服务器电脑都超时了:
opt = webdriver.ChromeOptions() opt.binary_location = self.chrome_exe_location opt.add_argument('--log-level=3') opt.add_argument('--start-maximized') opt.add_experimental_option('excludeSwitches', ['enable-logging']) opt.add_extension(os.path.join(os.getcwd(), '10.9.3_0.crx')) self.driver = webdriver.Chrome(self.chromedriver_exe_location, options=opt, service_args='')
Traceback(最近一次调用最后一次(:文件"C: \OneDrive \CloudDesktop\Python\main.py";,第968行,inbot((文件;C: \OneDrive \CloudDesktop\Python\main.py";,第69行,ininitself.chrome_initialize((文件"C: \OneDrive \CloudDesktop\Python\main.py";,第118行,inchrome_初始化self.driver=网络驱动程序。Chrome(self.chromedriver_xe_location,options=opt,service_args=''(文件"C: \OneDrive \CloudDesktop\Python\vEnv\lib\site packages\selenium\webdriver\chrome\webdriver.py",initsuper(WebDriver,self(中的第70行init(DesiredCabilities.CHROME["浏览器名称"],"goog",
文件"C: \OneDrive \CloudDesktop\Python\vEnv\lib\site packages\selenium\webdriver\chromi\webdriver.py",initRemoteWebDriver中的第93行init(文件"C:\OneDrive \CloudDesktop\Python\vEnv\lib\site packages\selenium\webdriver\remote\webdriver.py";,第269行,在initself.start_session(capabilities,browser_profile(File";C: \OneDrive \CloudDesktop\Python\vEnv\lib\site packages\selenium\webdriver\remote\webdriver.py",第360行,在start_session中response=self.execute(Command.NEW_SESSION,parameters(File";C: \OneDrive \CloudDesktop\Python\vEnv\lib\site packages\selenium\webdriver\remote\webdriver.py",第425行,执行中self.error_handler.check_response(响应(文件";C: \OneDrive \CloudDesktop\Python\vEnv\lib\site packages\selenium\webdriver\remote\errorhandler.py",第247行,在check_response中引发exception_class(消息、屏幕、堆栈(selenium.com.mon.exceptions.WebDriverException:消息:未知错误:未能等待加载扩展后台页面:铬-extension://nkbihfbeogaeaoehlefnkodbefgpgknn/background.html从超时:从渲染器接收消息超时:10.000
- 所有计算机上的Chrome和chromedriver版本98.0.4758.102 64位
- Python版本3.10.1(一台pc工作,一台未设计(和3.10.2(未工作(
- 操作系统:Win 10(无工作(和11(工作(全部更新
- CPU:5600x(工作(,Snapdragon 8cx(不工作(,Intel Celeron J3455(不工作
我想发生这种超时是因为硒不会等到扩展完全加载或传输。.crx的大小约为18MB,我认为它工作的计算机大约需要5秒,其他两台大约需要30秒。
我已经修改了selenium超时,但我发现这是一个失败的原因,因为我真的可以在创建selenium对象后设置这些参数,这首先导致了超时。
你们中有人知道硒如何让启动过程有更多的时间吗?
谢谢你的帮助!
在谷歌Chrome对chromedriver的官方支持中,有一些建议使用options.add_experimental_option('extensionLoadTimeout', 60000)
。指定的时间以毫秒为单位,因此60000对应于一分钟的超时。这修复了慢速电脑的超时问题。
我找到了一个解决方法:
-
在chrome的正常使用实例中下载扩展。
-
chrome://version/复制配置文件路径例如C:\Users\pcuser\AppData\Local\Google\Chrome\User Data\Default
-
Python代码:
profile_path = r'C:\Users\pcuser\AppData\Local\Google\Chrome\User Data' opt.add_argument('--user-data-dir={}'.format(profile_path)) # profile path opt.add_argument('--profile-directory={}'.format('DEFAULT')) #profile name self.driver = webdriver.Chrome(self.chromedriver_exe_location, options=opt, service_args='') self.driver.set_page_load_timeout(60) # adapt as you see fit self.driver.set_script_timeout(60) # adapt as you see fit self.driver.implicitly_wait(60) # adapt as you see fit