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


Posted in Python onMay 22, 2018

其实 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 相关文章推荐
Python中AND、OR的一个使用小技巧
Feb 18 Python
Python3中多线程编程的队列运作示例
Apr 16 Python
浅析Python中的赋值和深浅拷贝
Aug 15 Python
Python浅复制中对象生存周期实例分析
Apr 02 Python
python 实现将文件或文件夹用相对路径打包为 tar.gz 文件的方法
Jun 10 Python
Django在pycharm下修改默认启动端口的方法
Jul 26 Python
Pytorch中index_select() 函数的实现理解
Nov 19 Python
Python流程控制常用工具详解
Feb 24 Python
python导入库的具体方法
Jun 18 Python
关于tensorflow softmax函数用法解析
Jun 30 Python
Python连接mysql数据库及简单增删改查操作示例代码
Aug 03 Python
python里glob模块知识点总结
Jan 05 Python
python3实现163邮箱SMTP发送邮件
May 22 #Python
django请求返回不同的类型图片json,xml,html的实例
May 22 #Python
Django使用HttpResponse返回图片并显示的方法
May 22 #Python
python实现最长公共子序列
May 22 #Python
使用python存储网页上的图片实例
May 22 #Python
python3模块smtplib实现发送邮件功能
May 22 #Python
Python3.x爬虫下载网页图片的实例讲解
May 22 #Python
You might like
php下使用iconv需要注意的问题
2010/11/20 PHP
PHP实现的封装验证码类详解
2013/06/18 PHP
PHP自定session保存路径及删除、注销与写入的方法
2014/11/18 PHP
使用 PHPStorm 开发 Laravel
2015/03/24 PHP
js常用函数 不错
2006/09/08 Javascript
jquery 新建的元素事件绑定问题解决方案
2014/06/12 Javascript
javascript的函数作用域
2014/11/12 Javascript
jQuery中wrapInner()方法用法实例
2015/01/16 Javascript
如何用javascript计算文本框还能输入多少个字符
2015/07/29 Javascript
详解JavaScript中jQuery和Ajax以及JSONP的联合使用
2015/08/13 Javascript
详解Javascript继承的实现
2016/03/25 Javascript
Javascript 制作图形验证码实例详解
2016/12/22 Javascript
详解jQuery中的DOM操作
2016/12/23 Javascript
jQuery.form.js的使用详解
2017/06/14 jQuery
JavaScript常见事件处理程序实例总结
2019/01/05 Javascript
Python写的英文字符大小写转换代码示例
2015/03/06 Python
使用Python设置tmpfs来加速项目的教程
2015/04/17 Python
python 容器总结整理
2017/04/04 Python
django项目搭建与Session使用详解
2018/10/10 Python
在Python中居然可以定义两个同名通参数的函数
2019/01/31 Python
python ChainMap 合并字典的实现步骤
2019/06/11 Python
Tensorflow获取张量Tensor的具体维数实例
2020/01/19 Python
Python格式化输出--%s,%d,%f的代码解析
2020/04/29 Python
Django表单提交后实现获取相同name的不同value值
2020/05/14 Python
如何解决python多种版本冲突问题
2020/10/13 Python
从零实现一个自定义html5播放器的示例代码
2017/08/01 HTML / CSS
香港礼品网站:GiftU eshop
2017/09/01 全球购物
DC Shoes荷兰官方网站:美国极限运动品牌
2019/10/22 全球购物
2014大四本科生自我鉴定总结
2014/10/04 职场文书
商家认证委托书格式
2014/10/16 职场文书
2015年财务试用期工作总结
2014/12/24 职场文书
入学证明
2015/06/23 职场文书
react如何快速设置文件路径别名
2021/04/28 Javascript
Golang: 内建容器的用法
2021/05/05 Golang
详解Redis瘦身指南
2021/05/26 Redis
php png失真的原因及解决办法
2021/10/24 PHP