我有一个简单的Python脚本,它使用selenium和webdriver在Chrome窗口中打开Facebook并自动登录。 当我运行它时,即使在整个程序执行完毕之后,Chromedriver控制台窗口也会打开并保持打开状态,直到我自己关闭它。
有没有办法隐藏这个控制台窗口?我已经尝试为我的脚本保留一个“.pyw”扩展名,但这没有用,因为它不是脚本的控制台窗口,而是我希望隐藏的Chromedriver子进程'控制台窗口。
我找不到任何资源。我想我可能需要修改chrome webdriver源代码,但我不知道如何。这是我的代码:
from selenium import webdriver
import sys
driver = webdriver.Chrome("C:\Python27\Scripts\chromedriver.exe")
driver.get("https://www.facebook.com")
email = driver.find_element_by_id("email")
passwd = driver.find_element_by_id("pass")
email.clear()
passwd.clear()
email.send_keys("example@example.com")
passwd.send_keys("examplepassword")
passwd.submit()
答案 0 :(得分:2)
要隐藏webdriver控制台窗口,我必须在我的情况下编辑Lib \ site-packages \ selenium \ webdriver \ common \ services.py但我使用的是PhantomJS。 PhantomJS导入并使用此文件来启动其进程。基本上,我在Start方法中添加了以下创建标志:
def start(self):
"""
Starts the Service.
:Exceptions:
- WebDriverException : Raised either when it can't start the service
or when it can't connect to the service
"""
try:
cmd = [self.path]
cmd.extend(self.command_line_args())
self.process = subprocess.Popen(cmd, env=self.env,
close_fds=platform.system() != 'Windows',
stdout=self.log_file, stderr=self.log_file, creationflags=CREATE_NO_WINDOW)
except TypeError:
raise` in bold.
还要将此行添加到from win32process import CREATE_NO_WINDOW
这也适用于Chrome网络驱动程序,因为它的service.py也会导入这个相同的文件,但我没有时间尝试。
答案 1 :(得分:1)
您需要在脚本末尾调用driver.quit()
:
quit()
关闭浏览器并关闭ChromeDriver可执行文件 这是在启动ChromeDriver时启动的
如果您只想关闭服务可执行文件并让浏览器保持打开状态,请致电:
driver.service.stop()
仅供参考,我已经从quit()
方法实施(source code)中找到了这一点。