python - 在 pyinstaller 中以窗口模式导出到 EXE 后,Selenium 不起作用

标签 python python-3.x selenium pyinstaller

我正在制作一个需要使用 selenium 的 PyQt4 应用程序。开发时一切正常,但是当我通过 pyinstaller没有控制台 导出到单个文件 EXE 时,它会产生以下回溯错误:

[WinError6] The handle is invalid

当我在 console = True(在 pyinstaller 规范文件中)导出它时,不会发生这种情况,错误仅在 没有控制台 的情况下产生。

产生的错误在以下行中:

driver = webdriver.Chrome(executable_path="chromedriver.exe")

我的规范:

python :3.4
架构:64 位
Selenium :3.6.0
安装程序:3.3
操作系统:Windows 10

我用谷歌搜索了大约 1 小时,但找不到任何解决方案 :(

最佳答案

经过大量研究,我找到了解决上述问题的方法。

您只需要编辑文件:
C:\Python34\Lib\site-packages\selenium\webdriver\common\service.py

更改以下行:

self.process = subprocess.Popen(cmd, env=self.env,
                                        close_fds=platform.system() != 'Windows',
                                        stdout=self.log_file, stderr=self.log_file)

到:

self.process = subprocess.Popen(cmd, stdin=PIPE, stdout=PIPE, stderr=PIPE, shell=False, creationflags=0x08000000)

即使在开发期间以及部署到 EXE 之后,这也将起作用。

可能是 Selenium 错误。

关于python - 在 pyinstaller 中以窗口模式导出到 EXE 后,Selenium 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46520823/

相关文章:

java - BrowserMobProxy 不会捕获 har 文件中的任何条目

python - 关于 pandas 按功能分组的问题?

python - 如何在请求 HTTPS 调用中抑制有关缺少证书验证的警告?

python - 使用 FlatBuffers 编写结构向量

python - 转储已解析文档时是否可以保留 YAML block 结构?

django - 在 django 的模型中使用相同的外键两次作为不同的字段

ruby - 如何使用 Ruby 调用带有定义的 Capybara 驱动程序的 Selenium 方法?

vba - 如何在 Chrome 中使用 VBA + SELENIUM 计算类中的元素?

python - (Linux) 确定图像中不同颜色的百分比

python - 快速评估大量输入值的数学表达式(函数)