selenium+python 去除启动的黑色cmd窗口方法

时间:2022-11-03 11:45:21

其实 selenium启动窗口的时候就是 使用了subprocess.Popen 启动的驱动程序的,只要在启动的时候加上启动不显示窗口的参数即可。

下面魔改开始O(∩_∩)O哈哈~

修改代码 位于 D:\Python35\Lib\site-packages\selenium\webdriver\common\service.py 主要是 Service类的start函数

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
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())
  if 'win32' in str(sys.platform).lower(): ### 这里判断是否是windows平台
   ### 在windows平台上就隐藏窗口
   startupinfo = subprocess.STARTUPINFO()
   startupinfo.dwFlags = subprocess.CREATE_NEW_CONSOLE | subprocess.STARTF_USESHOWWINDOW
   startupinfo.wShowWindow = subprocess.SW_HIDE
  else:
   startupinfo = None
  self.process = subprocess.Popen(cmd, env=self.env,
          close_fds=platform.system() != 'Windows',
          stdout=self.log_file, stderr=self.log_file,startupinfo=startupinfo) ### 启动驱动
  self.PID = self.process.pid ### 将cmd窗口的进程pid 保留 因为 窗口被隐藏了 所以在后续程序中必须考虑主控进程结束的时候必须结束掉 驱动cmd窗口进程
 except TypeError:
  raise
 except OSError as err:
  if err.errno == errno.ENOENT:
   raise WebDriverException(
    "'%s' executable needs to be in PATH. %s" % (
     os.path.basename(self.path), self.start_error_message)
   )
  elif err.errno == errno.EACCES:
   raise WebDriverException(
    "'%s' executable may have wrong permissions. %s" % (
     os.path.basename(self.path), self.start_error_message)
   )
  else:
   raise
 except Exception as e:
  raise WebDriverException(
   "The executable %s needs to be available in the path. %s\n%s" %
   (os.path.basename(self.path), self.start_error_message, str(e)))
 count = 0
 while True:
  self.assert_process_still_running()
  if self.is_connectable():
   break
  count += 1
  time.sleep(1)
  if count == 30:
   raise WebDriverException("Can not connect to the Service %s" % self.path)

注意 在前面先导入 sys包

因为隐藏了驱动cmd窗口 所以 结束程序的时候 一定要做杀死驱动cmd窗口的动作哦 !O(∩_∩)O!!

以上这篇selenium+python 去除启动的黑色cmd窗口方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持服务器之家。

原文链接:https://blog.csdn.net/mzbqhbc12/article/details/61619089