VBA调用Selenium Firefox驱动时出现TimeoutError超时错误如何解决?
问题解决步骤
- 版本兼容性校验
你使用的geckodriver v0.30.0要求本地安装的Firefox浏览器版本≥91,如果你的Firefox版本低于该要求,要么升级Firefox到最新正式版,要么降级geckodriver到适配你当前Firefox的版本。如果你使用的是老旧的Selenium Basic封装库,建议降级geckodriver到v0.29.1版本,更高版本的geckodriver和旧版Selenium Basic存在适配问题。 - 配置驱动与浏览器路径
将下载好的geckodriver.exe放入系统PATH环境变量包含的目录(例如C:\Windows\System32),确保Selenium可以正常找到驱动文件。如果你的Firefox安装在非默认路径,需要手动指定Firefox可执行文件路径,初始化driver时添加如下代码:objFireFox.BinaryLocation = "你的Firefox.exe完整路径" - 本地网络规则检查
该报错本质是geckodriver无法和Firefox的本地监听端口建立通信,先暂时关闭本地防火墙测试是否恢复正常,如果关闭后问题解决,将geckodriver和Firefox加入防火墙白名单即可。如果你的系统开启了全局代理,将127.0.0.1加入代理忽略列表,避免本地通信走代理导致连接失败。 - 修正代码逻辑错误
解决连接问题后需要调整现有代码的两处错误:FindElementsByClass用于匹配多个元素返回列表,匹配单个元素应该使用FindElementByClass,且该方法不支持传入多个空格分隔的类名,多类名匹配请使用CSS选择器- 建议先配置全局页面加载超时,再调用Get方法访问链接
修正后的代码示例:
Set objFireFox = CreateObject("Selenium.FirefoxDriver") objFireFox.Timeouts.PageLoad = 20000 objFireFox.Get "https://chartink.com/screener/practical-swing-trading-stock-scanner" objFireFox.FindElementByCss(".btn.btn-default.buttons-copy.buttons-html5.btn-primary").Click
内容的提问来源于stack exchange,提问作者Aadee Maanav
相关产品推荐
相关产品推荐

