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

时间:2017-10-02 07:03:32

标签: python python-3.x selenium pyinstaller

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

[WinError6] The handle is invalid

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

产生的错误如下:

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

我的规格:

Python: 3.4
架构: 64位
硒: 3.6.0
Pyinstaller: 3.3
操作系统: Windows 10

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

2 个答案:

答案 0 :(得分:3)

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

您只需要编辑文件:
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之后,这也会起作用。

可能是硒虫。

答案 1 :(得分:0)

我发现pyinstaller不在dist文件夹中创建chromedriver.exe的副本。 将chromedriver.exe文件复制到那里可以为我解决问题。