在Selenium ChromeDriver中隐藏命令提示符

时间:2018-02-07 01:07:17

标签: python selenium selenium-webdriver

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

var driver = new ChromeDriver(driverService, new ChromeOptions());

有可能在Python中实现这一点吗?我已尝试在StackoverFlow和外部发布的所有可能的修复程序,但是当我运行.exe时,没有任何内容,cmd也会出现。

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

2 个答案:

答案 0 :(得分:2)

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

经过几个小时的挣扎(也是非常糟糕的话),我在github上制作了这个commit,现在可以通过代码轻松改变控制台提示行为。 我将尽力在官方消息来源提供。希望它会让你节省时间和耐心。

第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)

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)

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

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

编辑源代码时,请注意PEP! 使用标签,只是空格!

答案 1 :(得分:0)

我找到了解决此问题的方法:不要使用-w--Windowed pyinstaller选项。换句话说,执行以下操作:

pyinstaller --onefile "main.py"

不是这个:

pyinstaller --onefile -w "main.py"

是的,您将在开始时看到一个命令窗口,但不会在每次调用geckodriver.exe时弹出该窗口。我在用Firefox挣扎,因此是geckodriver.exe