python selenium T3

  既然要做自动,就得对得起自动化的这个名字。这一章我们将进一步的增加自动化测试的实用,增加
自动发邮件功能、多线程 和定时任务,让我们的自动化工作真正变得高效而又强大起来。

EG1 :

with open('report.html' , 'r') as f:msg = MIMEText(f.read() , _subtype='html' , _charset='utf-8')msg['Subject'] = Header(subject, 'utf-8')msg['date'] = datetime.now().strftime('%Y-%m-%d %H-%M-%S')smtp = smtplib.SMTP()smtp.connect(smtpserver)smtp.login(username, password)smtp.sendmail(sender,receiver , msg.as_string())smtp.quit()

  

EG2:

每个进程都有自己的地址空间,内存,数据栈以及其它记录其运行轨迹的辅助数据。操作系统管理在其上运行的所有进程,并为这些进程公平地分配时间。

线程(有时被称为轻量级进程)跟进程有些相似,不同的是,所有的线程运行在同一个进程中,共享
相同的运行环境。我们可以想像成是在主进程或“主线程”中并行运行的“迷你进程”。

在单线程中顺序执行两个循环。一定要一个循环结束后,另一个才能开始。总时间是各个循环
运行时间之和

thread 提供了低级别的、原始的
线程以及一个简单的锁。threading 基于 Java 的线程模型设计。锁(Lock)和条件变量(Condition)
在 Java 中是对象的基本行为(每一个对象都自带了锁和条件变量),而在 Python 中则是独立的对象。

我们应该避免使用 thread 模块,原因是它不支持守护线程。当主线程退出时,所有的子线程不论它
们是否还在工作,都会被强行退出。有时我们并不期望这种行为,这时就引入了守护线程的概念。 threading
模块则支持守护线程。

join()会等到线程结束,或者在给了 timeout 参数的时候,等到超时为止。join()的另一个比较重
要的方面是它可以完全不用调用。一旦线程启动后,就会一直运行,直到线程的函数结束,退出为止。

  

multiprocessing 使用类似于 threading 模块的 API ,multiprocessing 提供了本地和远程的并发性,有
效的通过全局解释锁(Global Interceptor Lock, GIL)来使用进程(而不是线程)。由于 GIL 的存在,在 CPU 密
集型的程序当中,使用多线程并不能有效地利用多核 CPU 的优势,因为一个解释器在同一时刻只会有一
个线程在执行。所以,multiprocessing 模块可以充分的利用硬件的多处理器来进行工作。它支持 Unix 和
Windows 系统上的运行。

EG1:

from time import sleep, ctimedef loop0():print('start loop 0 at:', ctime())sleep(1)print('loop 0 done at:', ctime())def loop1():print('start loop 1 at:', ctime())sleep(1)print('loop 1 done at:', ctime())def main():print('start:', ctime())loop0()loop1()print('all end:', ctime())if __name__ == '__main__':main()

  

EG2:

import threading
from time import sleep
from datetime import datetimeloops = [2, 4]def loop(nloop , nsec):print('start loop ' , nloop , ' at : ' , datetime.now())sleep(nsec)print('end  loop  ' , nloop , ' at : ' , datetime.now())def main():print('start main  ' , datetime.now())threads = []nloops = range(len(loops))for i in nloops :t = threading.Thread(target=loop , args=(i , loops[i]))threads.append(t)for i in nloops:threads[i].start()      #  开启线程for i in nloops:threads[i].join()       #  等待线程终止print('end  main  ', datetime.now())if __name__ == '__main__':main()

  

EG3:

import threading
from time import sleep
from datetime import datetimeloops = [4, 2]
format_date = '%Y-%m-%d-%H-%M-%S'class ThreadFunc(object):def __init__(self, func, args, name):self.name = nameself.func = funcself.args = argsdef __call__(self):apply(self.func , self.args)def loop(nloop , nsec):print('start loop ' , nloop , ' at : ' , datetime.now().strftime(format_date))sleep(nsec)print('end  loop  ' , nloop , ' at : ' , datetime.now().strftime(format_date))def main():print('start  main ' , datetime.now())threads = []nloops = range(len(loops))for i in nloops:t = threading.Thread(target=ThreadFunc(loop , (i, loops[i]) , loop.__name__))threads.append(t)for i in nloops:threads[i].start()for i in nloops:threads[i].join()print('end main   ' , datetime.now().strftime(format_date))if __name__ == '__main__':main()

EG4:

  

转载于:https://www.cnblogs.com/zsr0401/p/6489860.html

python selenium T3相关推荐

  1. python+selenium多线程与多进程爬虫

    使用python+selenium抓取深圳证券交易所本所公告数据,刚开始是用单进程爬取的,最近将代码修改了一下,分别用多进程和多线程进行抓取,速度非常快.如果对selenium不了解的请移步别的地方学 ...

  2. Python+selenium+firefox模拟登录微博并爬取数据(1

    1:环境python3.5,最新 firefox,selenium-3.14.0. 本来准备用无界面的,但是感觉效果不好看出来所以先用有界面的浏览器来做.分几次来慢慢写.这节先配置好环境. 2:安装: ...

  3. 教你两种python selenium保存图片的方法

    大家好,本篇文章主要讲的是python selenium保存图片最好的两种方法,感兴趣的同学赶快来看一看吧,对你有帮助的话记得收藏一下 selenium爬取页面时经常遇到要保存图片的需求,通常的做法是 ...

  4. mac 搭建python+selenium+chromedriver环境

    mac 搭建python+selenium+chromedriver环境 有关配置默认python3,请查看:https://blog.csdn.net/qq_35098526/article/det ...

  5. Python + Selenium 自动发布文章(二):简书

    Python + Selenium 自动发布文章系列: Python + Selenium 自动发布文章(一):开源中国 Python + Selenium 自动发布文章(二):简书 Python + ...

  6. Python selenium根据class定位页面元素,xpath定位

    Python selenium根据class定位页面元素 在日常的网页源码中,我们基于元素的id去定位是最万无一失的,id在单个页面中是不会重复的.但是实际工作中,很多前端开发人员并未给每个元素都编写 ...

  7. Python selenium巧用Javascript脚本注入解决按钮点选问题

    Python selenium巧用Javascript脚本注入解决按钮点选问题 参考文章: (1)Python selenium巧用Javascript脚本注入解决按钮点选问题 (2)https:// ...

  8. python自动化办公都能做什么菜-python+selenium自动化(一)之环境搭建

    一.环境选择 python版本:python3.7(64位)下载地址:https://www.python.org/downloads/ (推荐使用官方下载) selenium版本:selenium3 ...

  9. python简单代码演示效果-Python Selenium的简单演示程序

    前面几篇介绍了下Selenium干什么用的,怎么安装Selenium和WebDriver,这篇就来个简单演示程序让它run起来,看代码领会精神是比较直接的. Python Selenium的运行原理 ...

最新文章

  1. 【洛谷 P3975】 [TJOI2015]弦论(后缀自动机)
  2. oracle 分表设计,oracle 分库分表(sharding)
  3. JAVA WEB部分易混淆问题总结
  4. autorun.inf删除方法
  5. 我的第一份博客,测试一下:P
  6. paip.gui控件form窗体的原理实现以及easyui的新建以及编辑实现
  7. chrome提示安装unity web player
  8. 树莓派PICO:DS1302时钟芯片(MicroPython)
  9. sql智能语法提示插件 sql prompt 10
  10. 关于Win8引导菜单风格切换
  11. python scikit learn 关闭开源_Scikit Learn安装教程
  12. adb无线连接控制android手机
  13. 如何两台电脑共享文件?
  14. 摄像头分辨率对应关系
  15. Python网络爬虫入门案例
  16. Linux 解决部分英文乱码问题
  17. AdaGrad 与 SGD的比较
  18. 解构微信(四):不靠QQ,品牌和推广要推翻重来
  19. jQuery 修改样式
  20. 这可能是最详细剖析网格交易的文章了

热门文章

  1. 机器学习算法总结--随机森林
  2. 动态规划-直方图最大长方形
  3. 《大型网站技术架构:核心原理与案例分析》-- 读书笔记 (2) : 大型网站核心架构要素(1) -- 性能...
  4. 数据库调优过程(五):物理分表,及写入方案调整
  5. (剑指Offer)面试题5:从尾到头打印链表
  6. 4种kill某个用户所有进程的方法
  7. 马后炮之12306抢票工具(四)--抢票Demo,2014年1月9日终结版
  8. ADO连接各种数据库
  9. ISA Server 2004 0x80004005错误
  10. linux u盘 uid pid,linux下的pid文件的作用