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的Flask框架中使用模版的入门教程
Apr 20 Python
Python绘制七段数码管实例代码
Dec 20 Python
Python学生成绩管理系统简洁版
Apr 05 Python
小白入门篇使用Python搭建点击率预估模型
Oct 12 Python
python 构造三维全零数组的方法
Nov 12 Python
python去重,一个由dict组成的list的去重示例
Jan 21 Python
python实现浪漫的烟花秀
Jan 30 Python
浅析Python 读取图像文件的性能对比
Mar 07 Python
python  ceiling divide 除法向上取整(或小数向上取整)的实例
Dec 27 Python
Keras:Unet网络实现多类语义分割方式
Jun 11 Python
详解Python 循环嵌套
Jul 09 Python
Python DataFrame使用drop_duplicates()函数去重(保留重复值,取重复值)
Jul 20 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
Discuz 5.0 中读取纯真IP数据库函数分析
2007/03/16 PHP
浅谈php命令行用法
2015/02/04 PHP
Laravel 微信小程序后端实现用户登录的示例代码
2019/11/26 PHP
Fixie.js 自动填充内容的插件
2012/06/28 Javascript
js动态添加onclick事件可传参数与不传参数
2014/07/29 Javascript
JS三级可折叠菜单实现方法
2016/02/29 Javascript
AngularJS基础 ng-repeat 指令简单示例
2016/08/03 Javascript
浅析如何利用angular结合translate为项目实现国际化
2016/12/08 Javascript
浅谈js停止事件冒泡 阻止浏览器的默认行为(阻止超连接 #)
2017/02/08 Javascript
JS实现AES加密并与PHP互通的方法分析
2017/04/19 Javascript
win系统下nodejs环境安装配置
2017/05/04 NodeJs
浅谈在koa2中实现页面渲染的全局数据
2017/10/09 Javascript
Node.js实现mysql连接池使用事务自动回收连接的方法示例
2018/02/03 Javascript
详解NodeJs开发微信公众号
2018/05/25 NodeJs
vue+element的表格实现批量删除功能示例代码
2018/08/17 Javascript
微信小程序实现弹出层效果
2020/05/26 Javascript
利用Vconsole和Fillder进行移动端抓包调试方法
2019/03/05 Javascript
vue使用codemirror的两种用法
2019/08/27 Javascript
Nodejs监控事件循环异常示例详解
2019/09/22 NodeJs
JavaScript中的函数申明、函数表达式、箭头函数
2019/12/06 Javascript
在Django的模型中添加自定义方法的示例
2015/07/21 Python
Python3实现打印任意宽度的菱形代码
2020/04/12 Python
对python pandas中 inplace 参数的理解
2020/06/27 Python
Python3.9.0 a1安装pygame出错解决全过程(小结)
2021/02/02 Python
瑞士隐形眼镜和护理产品网上商店:Linsenklick
2019/10/21 全球购物
Oracle中delete,truncate和drop的区别
2016/05/05 面试题
手机业务员岗位职责
2013/12/13 职场文书
小学生元旦感言
2014/02/26 职场文书
2015年小学生新年寄语
2014/12/08 职场文书
初中优秀学生评语
2014/12/29 职场文书
新教师个人工作总结
2015/02/06 职场文书
幼儿园个人师德总结
2015/02/06 职场文书
施工现场安全管理制度
2015/08/05 职场文书
村党总支部公开承诺书2016
2016/03/25 职场文书
深入理解Vue的数据响应式
2021/05/15 Vue.js
如何创建一个创建MySQL数据库中的datetime类型
2022/03/21 MySQL