如何在后台使用Selenium chromedriver运行python脚本Windows?

问题描述

我正在尝试使用python创建后台网络抓取工具。我已经设法为其编写代码,然后使用pythonw.exe应用程序在没有任何控制台窗口的情况下执行它。另外,我以无头模式运行ChromeDriver。

问题是,它仍会为ChromeDriver生成一个控制台窗口,其中显示std::min

如何摆脱这个窗口?

解决方法

即使您将脚本设置为.pyw,在创建新进程chromedriver.exe时,也会为此显示一个控制台窗口。在 C#中可以打开选项CREATE_NO_WINDOW,但是在 Selenium Python 绑定中还没有。我打算叉硒并自己添加此功能。

目前的解决方案(仅适用于Windows):编辑硒库

转到此文件夹:C:\Users\name\AppData\Local\Programs\Python\Python38-32\Lib\site-packages\selenium\webdriver\common\(直到 Python38-32 的路径取决于您安装的python)。

将有一个名为service.py的文件,您需要按以下步骤进行编辑:

  • 在顶部from subprocess import STDOUT,CREATE_NO_WINDOW
  • 处添加导入语句
  • 现在(也许在第72至76行中),您必须在函数creationflags=CREATE_NO_WINDOW中添加另一个选项subprocess.Popen()。为了清楚起见,请参见以下代码的前后版本:

编辑前:

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

编辑后:

self.process = subprocess.Popen(cmd,stdin=PIPE
                                creationflags=CREATE_NO_WINDOW) # Here !

注意:

复制旧的service.py文件,以便将来需要时将其替换。

,

我修改了硒库,并摆脱了这个窗口。

就我而言,这是修改后的文件路径:

C:\ Python37-32 \ Lib \ site-packages \ selenium \ webdriver \ common \ service.py

请参阅modified section