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

yipeiwu_com6年前Python基础

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

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

修改代码 位于 D:\Python35\Lib\site-packages\selenium\webdriver\common\service.py 主要是 Service类的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())
   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窗口方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持【听图阁-专注于Python设计】。

相关文章

深入理解NumPy简明教程---数组2

NumPy数组(2、数组的操作) 基本运算 数组的算术运算是按元素逐个运算。数组运算后将创建包含运算结果的新数组。 >>> a= np.array([20,30...

在CentOS上配置Nginx+Gunicorn+Python+Flask环境的教程

Python基础环境搭建 CENTOS 6.X 系列默认安装的 Python 2.6 ,目前开发中主要是使用 Python 2.7 ,这两个版本之间还是有不少差异的,程序在 Python...

详解Python做一个名片管理系统

名片管理系统有两个模块组成:cards_main.py 和 cards_tools.py一个是主程序,另一个是封装增删改查函数的被调用程序 代码如下 cards_main.py #!...

利用python获取当前日期前后N天或N月日期的方法示例

前言 最近因为工作原因,发现一个Python的时间组件,很好用分享出来!(忘记作者名字了,在这里先感谢了),下面话不多说,来一起看看详细的介绍吧。 示例代码: # -*- codi...

在python2.7中用numpy.reshape 对图像进行切割的方法

在python2.7中用numpy.reshape 对图像进行切割的方法

遇到这么个需求:把图片按照定义的patchsize切块,然后按照z轴顺序叠放小块,如下图(仅考虑灰度图像) 图片im,设size为(h,w),patchsize为(ph,pw),则处理...