在 Selenium ChromeDriver 中隐藏命令提示符

mas*_*asc 6 python selenium selenium-webdriver

var driverService = ChromeDriverService.CreateDefaultService();
driverService.HideCommandPromptWindow = true;

var driver = new ChromeDriver(driverService, new ChromeOptions());
Run Code Online (Sandbox Code Playgroud)

是否有可能在 Python 中实现这一点?我已经尝试了在 StackoverFlow 和外部发布的所有可能的修复程序,但是当我运行我的 .exe 时什么也没有,cmd 也出现了。

Python 3.6,最新的 Selenium 版本 (3.9)。

mas*_*asc 9

我找到了在 python 中复制上述代码的方法(或多或少)将此修复 作为我灵感的基础。

经过数小时的挣扎(以及非常糟糕的话语),我在 github 上进行了此提交,现在可以通过代码轻松更改控制台提示行为。我会尽量让它在官方来源中可用。希望它能让你节省时间和耐心。

第1步

找到service.py,一般在“X:\YourPythonFold\Lib\site-packages\selenium\webdriver\common\service.py”

第2步

替换这些行(大约 n° 72-76,在 start method def 下方):

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

if any("hide_console" in arg for arg in self.command_line_args()):
                self.process = subprocess.Popen(cmd, stdin=PIPE, stdout=PIPE, stderr=PIPE, creationflags=0x08000000)
            else:
                self.process = subprocess.Popen(cmd, env=self.env, close_fds=platform.system() != 'Windows', stdout=self.log_file, stderr=self.log_file, stdin=PIPE)
Run Code Online (Sandbox Code Playgroud)

最后在您的代码中,当您设置驱动程序时(我选择 Chrome 作为示例):

args = ["hide_console", ]
driver = webdriver.Chrome("your-path-to-chromedriver.exe", service_args=args, ...)
Run Code Online (Sandbox Code Playgroud)

编辑源代码时,注意PEP!千万不能使用制表符,只是空格!