一尘不染

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

selenium

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

[WinError6] The handle is invalid

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

产生的错误在以下行中:

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

我的规格:

Python: 3.4
体系结构: 64位
Selenium: 3.6.0
Pyinstaller: 3.3
OS: Windows 10

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


阅读 476

收藏
2020-06-26

共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之后,这也将起作用。

可能是硒虫。

2020-06-26