Python+Selenium(Chrome):在慢速计算机上的扩展超时



我正在尝试将一个扩展(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对应于一分钟的超时。这修复了慢速电脑的超时问题。

我找到了一个解决方法:

  1. 在chrome的正常使用实例中下载扩展。

  2. chrome://version/复制配置文件路径例如C:\Users\pcuser\AppData\Local\Google\Chrome\User Data\Default

  3. 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
    

相关内容

  • 没有找到相关文章

最新更新