2016年1月,机缘巧合下我出版了《Selenium2自动化测试实战--基于python语言》这本书,当时写书的原因是,大部分讲Selenium的书并不讲编程语言和单元测试框,如果想在项目中使用Selenium,几乎离不开编程语言和单元测试框架,难道你只用SeleniumIDE去录制/回放脚本么?没想到受到许多测试人员的欢迎,我会时常去看网上的书评。大多是感谢的留言,书的销量也印证了这一点,当然,也有批评和建议。在此,表示感谢。随着,我对Selenium自
系统 2019-09-27 17:51:40 1798
本文实例为大家分享了python查找重复图片并删除的具体代码,供大家参考,具体内容如下和网络爬虫配套的,也可单独使用,从网上爬下来的图片重复太多,代码支持识别不同尺寸大小一致的图片,并把重复的图片删除,只保留第一份。#-*-coding:utf-8-*-importcv2importnumpyasnpimportos,sys,typesdefcmpandremove2(path):dirs=os.listdir(path)dirs.sort()iflen(
系统 2019-09-27 17:51:12 1798
本文实例为大家分享了python中的代码行数统计,供大家参考,具体内容如下思路:统计文件中代码的总行数减去空行单行注释以及多行注释功能:1.获取文件内容的总行数2.排除空行单行注释多行注释defcode_statistics(path):##打开这个文件withopen(path,'r',encoding='utf-8')asopenFile:#按列读取fileline=openFile.readlines()#给非代码行一个变量i=0#整个文件里面内容的
系统 2019-09-27 17:51:02 1798
模块Module定义包含一系列数据、函数、类的文件,通常以.py结尾。作用让一些相关的数据,函数,类有逻辑的组织在一起,使逻辑结构更加清晰。有利于多人合作开发。导入import1.语法:import模块名import模块名as别名2.作用:将某模块整体导入到当前模块中3.使用:模块名.成员fromimport1.语法:from模块名import成员名[as别名1]作用:将模块内的一个或多个成员导入到当前模块的作用域中。fromimport*1.语法:fro
系统 2019-09-27 17:51:00 1798
11.58事件11.581事件绑定方法与解绑绑定事件://绑定方式一:$('.box1').click(function(){alert('绑定方式一')});//绑定方式二:$('.box1').on("click",function(){alert('绑定方式一')});//绑定方式三:$('.box1').bind('click',{'a':'b'}function(e){alert('绑定方式二');console.log(e.data);})
系统 2019-09-27 17:50:58 1798
字符串是Python中最常用的数据类型,而且很多时候你会用到一些不属于标准ASCII字符集的字符,这时候代码就很可能抛出UnicodeDecodeError:'ascii'codeccan'tdecodebyte0xc4inposition10:ordinalnotinrange(128)异常。这种异常在Python中很容易遇到,尤其是在Python2.x中,是一个很让初学者费解头疼的问题。不过,如果你理解了Python的Unicode,并在编码中遵循一定
系统 2019-09-27 17:50:35 1798
这里先解释一下几个概念-位置参数:按位置设置的参数,隐式用元组保存对应形参.平时我们用的大多数是按位置传参.比如有函数deffunc(a,b,c),调用func(1,2,3).即a=1,b=2,c=3-关键字参数:可以通过关键字设置参数,不用关心参数位置,隐式用字典保存形参.比如有函数deffunc(a,b,c),调用func(b=1,c=2,a=3),即a=3,b=1,c=2普通格式复制代码代码如下:deffunc(opt_args):...return
系统 2019-09-27 17:50:13 1798
在了解装饰器的之前一定要先了解函数作为参数传递,什么是函数内嵌,请参考我之前写的博客函数简介因为在python里面,函数也是对象,也可以作为参数进行传递.python装饰器本质也是一种特殊函数,它接收的参数是函数对象,然后动态地函数参数添加额外的功能,而不用修改原有的函数对象.python装饰器传入的参数是函数,返回的值也是函数!python装饰器思想有点类似设计模式的装饰模式,其意图是动态地给函数对象添加额外的功能.比如像增加日志打印的功能,有点面向切面
系统 2019-09-27 17:50:12 1798
微线程领域(至少在Python中)一直都是StacklessPython才能涉及的特殊增强部分。关于Stackless的话题以及最近它经历的变化,可能本身就值得开辟一个专栏了。但其中简单的道理就是,在“新的Stackless”下,延续(continuation)显然是不合时宜的,但微线程还是这个项目存在的理由。这一点很复杂……刚开始,我们还是先来回顾一些内容。那么,什么是微线程呢?微线程基本上可以说是只需要很少的内部资源就可以运行的进程�D并且是在Pyth
系统 2019-09-27 17:49:59 1798
理解新概念PythonV2.2中引入了迭代器的思想。唔,这并不十分正确;这种思想的“苗头”早已出现在较老的函数xrange()以及文件方法.xreadlines()中了。通过引入yield关键字,Python2.2在内部实现的许多方面推广了这一概念,并使编程定制迭代器变得更为简单(yield的出现使函数转换成生成器,而生成器反过来又返回迭代器)。迭代器背后的动机有两方面。将数据作为序列处理通常是最简单的方法,而以线性顺序处理的序列通常并不需要都同时实际存在
系统 2019-09-27 17:49:57 1798