Selenium GeckoDriver 启动 Firefox 浏览器速度慢

3

最近我一直在尝试重新建立Selenium环境。脚本正常执行,使用不同的Web驱动程序等等,一切都应该正常运行。

然而,每个驱动程序的初始启动时间需要2-5分钟之间。这使得开发和调试我的脚本非常麻烦。

我使用Python 3.6与PyCharm以及通过pip安装的Selenium。相同的问题也存在于Python 2.7上。

到目前为止,我尝试了以下几种方法(但没有成功):

  • 重新安装Python
  • 重新安装Selenium
  • 通过PyCharm和终端运行脚本
  • 用早期或更高版本的Web驱动程序替换
  • 禁用Web驱动程序的代理和JavaScript

以下是我正在运行的内容。这个简单的脚本需要最多5分钟才能运行,但是会正确地工作,并且没有任何警告或错误。

from selenium import webdriver
import time
print(time.localtime())
browser = webdriver.Firefox()
browser.get('http://seleniumhq.org/')
print(time.localtime())

编辑: 以上代码的单次运行会产生以下geckodriver.log

1528112695159   geckodriver INFO    geckodriver 0.19.1
1528112695168   geckodriver INFO    Listening on 127.0.0.1:3148
1528112747876   mozrunner::runner   INFO    Running command: "C:\\Program Files (x86)\\Mozilla Firefox\\firefox.exe" "-marionette" "-profile" "C:\\Users\\victorsk\\AppData\\Local\\Temp\\rust_mozprofile.ULuflXGoq9rE"
Unable to read VR Path Registry from C:\Users\victorsk\AppData\Local\openvr\openvrpaths.vrpath
Unable to read VR Path Registry from C:\Users\victorsk\AppData\Local\openvr\openvrpaths.vrpath
Unable to read VR Path Registry from C:\Users\victorsk\AppData\Local\openvr\openvrpaths.vrpath
Unable to read VR Path Registry from C:\Users\victorsk\AppData\Local\openvr\openvrpaths.vrpath
Unable to read VR Path Registry from C:\Users\victorsk\AppData\Local\openvr\openvrpaths.vrpath
1528112791808   Marionette  INFO    Listening on port 3158
1528112792599   Marionette  WARN    TLS certificate errors will be ignored for this session
[Parent 36664, Gecko_IOThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
[Parent 36664, Gecko_IOThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
[Child 22672, Chrome_ChildThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
[Child 22672, Chrome_ChildThread] WARNING: pipe error: 109: file z:/build/build/sr[Parent 36664, Gecko_IOThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
[Child 25068, Chrome_ChildThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
[Child 25068, C*** UTM:SVC TimerManager:registerTimer called after profile-before-change notification. Ignoring timer registration for id: telemetry_modules_ping

更新问题并附上 GeckoDriver 控制台日志。 - undetected Selenium
1个回答

1
这些错误信息...
Unable to read VR Path Registry from C:\Users\victorsk\AppData\Local\openvr\openvrpaths.vrpath
Unable to read VR Path Registry from C:\Users\victorsk\AppData\Local\openvr\openvrpaths.vrpath
Unable to read VR Path Registry from C:\Users\victorsk\AppData\Local\openvr\openvrpaths.vrpath
Unable to read VR Path Registry from C:\Users\victorsk\AppData\Local\openvr\openvrpaths.vrpath
Unable to read VR Path Registry from C:\Users\victorsk\AppData\Local\openvr\openvrpaths.vrpath

这意味着已经有多次尝试从C:\Users\victorsk\AppData\Local\openvr\openvrpaths.vrpath读取现有的VR路径注册表

你的主要问题是系统中存在操作系统任务

  • 我们无法确定你的Selenium客户端版本。
  • 你的GeckoDriver版本是v0.19.1
  • 我们无法确定你的Firefox版本。

解决方案

为了加快操作,请按照以下步骤进行:

  • 升级Selenium到当前版本 Version 3.12.0
  • GeckoDriver升级到GeckoDriver v0.20.1
  • 确保GeckoDriver二进制文件位于指定位置。
  • 确保非root用户对GeckoDriver具有可执行权限。
  • Firefox版本升级到Firefox v60.0.1
  • 通过您的IDE清理项目工作区,仅使用所需的依赖项重建项目。
  • 使用CCleaner工具在执行测试套件之前和之后清除所有操作系统任务。
  • 如果您的基本Web Client版本过旧,则通过Revo Uninstaller卸载它并安装最新的GA和发布版本的Web Client
  • 进行系统重启
  • 以非root用户身份执行您的Test
  • 始终在tearDown(){}方法中调用driver.quit()以优雅地关闭和销毁WebDriverWeb Client实例。
注意:不要禁用 JavaScript。禁用 JavaScript 可能会导致网页加载不完整,因为所有的网页设计师/开发者都认为 JavaScript 在每个浏览器中都可用,并且所有最近的浏览器特性和效果都是使用 JavaScript 实现的。

感谢您的回答。我的Selenium和Firefox已经更新到最新版本。我遵循了您的所有其他建议。但是,我仍然有完全相同的问题。您的建议清除了日志中的管道错误,但除此之外,情况没有改变。 - Verzus
@Verzus,您能否更新问题并提供您的_当前环境详细信息(包括GeckoDriver基本版本)_,_当前代码块_和**跟踪级别日志**以进行进一步分析? - undetected Selenium

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接