- 博客(64)
- 收藏
- 关注
原创 python学习:限制实例的属性
若要限制某一实例只具有某几个属性,该怎么办呢?在定义class的时候,定义__slots__变量,来限制该class实例能添加的属性:举例:>>> class Student(object): __slots__ = ('name','age') >>> s = Student()>>> s.name='xiaoh'>>> s.age=25>>> s.mobie='1
2017-11-09 16:40:35
367
原创 python学习:实例动态绑定属性和方法
1.动态给实例绑定属性:class Student(object): passs=Student()s.name='xiaoming'print s.name =====> 输出:xiaoming2.动态给一个实例绑定方法:----------------------------------》存在问题:只有该实例具有绑定方法,其他实例不能享用通过导入types的MethodType方
2017-11-09 16:21:27
466
原创 PYTHON学习:下划线说明
Python 用下划线作为变量前缀和后缀指定特殊变量_xxx (单下划线)不能用’from module import *’导入,只有类对象和子类对象自己能访问这些变量__xxx__ (前、后双下划线)系统定义名字,代表python里特殊方法专用的标识__xxx(双下划线) 类中的私有变量名,只有类对象自己能访问,连子类对象也不能访问到这个数据
2017-11-09 14:39:03
281
原创 ECLIPSE python调试断点有一斜框,无法调试的解决方法
ECLIPSE python调试断点有一斜框,无法调试的解决方法:菜单栏:WINDOW--->show view---->other---->debug--->Breakpoints2.点击 skip all breakpoints ,斜框即可取消点击后
2017-10-17 10:58:01
831
原创 JS学习记录1:作用域
JavaScript 作用域局部变量:在函数中通过var声明的变量。-----只能在函数内部访问。函数执行完后局部变量会自动销毁全局变量:在函数外通过var声明的变量。-----网页中所有脚本和函数均可使用。全局变量在页面关闭后销毁没有声明就使用的变量,默认为全局变量,不论这个变量在哪被使用。function myFunction() {
2017-10-16 10:33:15
193
转载 python 数值类型转换
转自:http://blog.csdn.net/shanliangliuxing/article/details/7920400因为python跟java在数据类型转换方面语法不同,所以总是搞混,特此记录下来,方便查阅:在python中:字符串str转换成int: int_value = int(str_value)int转换成字符串str: str_v
2017-10-12 17:19:50
1398
原创 重要记录:HtmlTestRunner.HTMLTestRunner,不加u报告生成出错的记录
重要记录:以下错误犯了好几次,浪费了好多排查时间,以此记录明示。HtmlTestRunner.HTMLTestRunner(stream=fp,title=u'自动化测试报告',description=u'用例执行情况:')title,description前一定要加u,否则不能生成测试报告,且会一直报错:UnicodeDecodeError: 'ascii' codec can't
2017-09-30 16:41:10
952
转载 python os模块简明文档
第一部分:os.pathos.path.abspath(path):返回path规范化的绝对路径例:print os.path.abspath('.') #返回当前目录print os.path.abspath('..') #返回上级目录print os.path.abspath('../..')#返回上上级目录print os.path.dirname(os.
2017-09-22 14:27:22
240
转载 第37节 自动发邮件总结及实例说明
python发邮件需要掌握两个模块的用法,smtplib和email,这俩模块是python自带的,只需import即可使用。smtplib模块主要负责发送邮件,email模块主要负责构造邮件。smtplib模块主要负责发送邮件:是一个发送邮件的动作,连接邮箱服务器,登录邮箱,发送邮件(有发件人,收信人,邮件内容)。email模块主要负责构造邮件:指的是邮箱页面显示的一些构造,如发
2017-09-20 10:27:12
1016
转载 第38节:python通过SMTP协议发送邮件失败,报错505或535或554
发送失败错误1:smtplib.SMTPAuthenticationError: (550, b'User has no permission') 我们使用python发送邮件时相当于自定义客户端根据用户名和密码登录,然后使用SMTP服务发送邮件,新注册的163邮箱是默认不开启客户端授权的,因此登录总是被拒绝,解决办法(以163邮箱为例):进入163邮箱-设置-客户端授权密码-
2017-09-20 10:02:52
8356
3
转载 第36节 创建定时任务
创建定时任务,使自动化测试脚本在指定的时间自动化运行 。方式一:通过程序创建定时任务思路是通过Python 的 os 模块中提供了 system()用来执行系统命令 比如我们要执行 E:\\test_object\\目录下的 all_test.py 文件,可以这样来实现: 或者:或者我们先切换到相应的目录,然后通过 Python 命令去执行 all_test.py 文件更符
2017-09-18 16:27:53
448
原创 第35节 HtmlTestRunner测试报告
HTMLTestRunner 是 Python 标准库的 unittest 单元测试框架的一个扩展。它生成易于使用的 HTML 测试报告。 使用前提:1. 首先要下 载HTMLTestRunner.py 文件,下载地址:http://tungwaiyip.info/software/HTMLTestRunner.html2. HTMLTestRunner.py 本是一个.py 文件
2017-09-18 13:48:56
652
原创 第34节:unittest断言
unittest断言在测试用例中,执行完测试用例后,最后一步是判断测试结果是pass还是fail,自动化测试脚本里面一般把这种生成测试结果的方法称为断言(assert)基础断言:MethodChecks thatassertEqual(a, b)a == bassertNotEqual(a, b)a !
2017-09-18 10:26:16
464
原创 第33节:unittest状饰器简介
初始化和清理每次用例均执行setUp和tearDown在每次执行case前后都执行了一次实例:可以看到,setUp tearDown在每个用例执行前后均执行了。初始化和清理只执行一次setUpClass() 与 tearDownClass()在所有case执行前,后,只运行一次初始化(即:setup中存放的内容) 和 清理(即:
2017-09-15 17:23:06
248
原创 第31节:unittest基本介绍
转自:http://blog.csdn.net/huilan_same/article/details/52944782unittest是xUnit系列框架中的一员。unittest核心工作原理unittest中最核心的四个概念是:test case, test suite,test runner, test fixture。下面我们分别来解释这四个概念的意
2017-09-15 13:52:20
382
原创 第32节:unittest--错误报告的详细程度
在unittest.main()中加 verbosity 参数可以控制输出的错误报告的详细程度,默认是 1以下分别对各参数值运行情况进行说明与展示。verbosity =0verbosity =1verbosity =2
2017-09-14 17:06:23
701
转载 第30节:查看selenium API
前言 前面都是点点滴滴的介绍selenium的一些api使用方法,那么selenium的api到底有多少呢?本篇就叫大家如何去查看selenium api,不求人,无需伸手找人要,在自己电脑就有。 pydoc是Python自带的模块,主要用于从python模块中自动生成文档,这些文档可以基于文本呈现的、也可以生成WEB 页面的,还可以在服务器上以浏览器的方式呈现!
2017-09-11 16:05:35
271
原创 第29节:参数化
参数化方式可通过txt,csv,xml.excel等第一种:txt参数化1.有一列值。本例:通过百度搜索不同值脚本:TXT文件如下:2.有两列值
2017-09-11 15:43:48
261
原创 第28节:webdriver截图
Webdriver 提供了截图函数 get_screenshot_as_file()来截取当前窗口。代码如下:本例中百度输入框的 id=kw1会定位不到元素,那么try就会捕捉到这个异常,从而执行except,在 except中执行 get_screenshot_as_file()对当前窗口进行截图,这里需要指定图片的保存路径及文件名,并且关闭当前驱动。
2017-09-07 17:01:45
305
转载 第27节:通过py2exe将自动化脚本打包成一个exe
写好了Python selenium脚本,到其他机器上运行,还得要在其他机器上也装一套Python的环境,尤其在你用了一些第三方库的时候,甚至还要顾及操作系统是32位还是64位,是不是很坑,如果能打成一个exe就好了,不论32位还是64位,只要拷过去,安装合适版本的浏览器就行了。今天博主就带你将你的py脚本打包成一个exe1. 环境首先准备下环境,一台32位虚拟机(64
2017-09-07 16:45:37
409
转载 第二十六节:动态id、class怎么定位
今天再给大家分享一个定位不到元素的原因——动态id。没有打开新页面、没有alert、没有frame、加了等待时间,但是还是定位不到元素?很有可能是你要定位的元素的属性是动态的,即每次打开页面,这个元素的id或者class等元素属性是动态生成的。代码执行时,元素的属性已经与之前不同,用之前的属性值去定位自然是定位不到的,会抛出NoSuchElementException。那么,怎么判
2017-09-07 15:55:07
1438
转载 第二十五节:父子、兄弟、相邻节点定位方式详解
今天跟大家分享下selenium中根据父子、兄弟、相邻节点定位的方法,很多人在实际应用中会遇到想定位的节点无法直接定位,需要通过附近节点来相对定位的问题。1. 由父节点定位子节点最简单的肯定就是由父节点定位子节点了,我们有很多方法可以定位,下面上个例子:对以下代码:html>body>div id="A"> div id="B">
2017-09-07 15:49:49
782
转载 第二十四节:兼容所有浏览器滚动条滚动的js
很多人发现写的js操作滚动条的代码只能控制firefox的滚动条,而chrome则不吊你;好不容易chrome能动了,firefox又不理你了。简直是坑的一比。那有没有兼容firefox、chrome、IE的方法呢?当然是有的,博主今天就给大家分享几种兼容以上三种浏览器的js写法:$(window).scrollTop(300);$(document).scrollTop(3
2017-09-07 14:55:02
380
转载 第二十三节: selenium之 坑(StaleElementReferenceException: Message: Element not found in the cache...)
转载:http://blog.csdn.net/huilan_same/article/details/52432206今天给大家分享一个selenium中经常会有人遇到的坑:selenium.common.exceptions.StaleElementReferenceException: Message: Element not found in the cache - p
2017-09-07 14:48:13
333
转载 第22节:富文本框和editor编辑器的处理
一般输入框有三种:短的input框,如下:textarea框,如下:div式的editor框,如下: 也可能是更复杂的iframe的editor,如下: 下面依次看看这几种输入框该怎么解决:1. input其实这个只是列在这里,直接send_keys就行
2017-09-07 14:38:22
1029
原创 第21节:JS处理日期控件
日期控件-----把它当成一个普通的input框处理时,但很多时候,此类型input框都是禁止手动输入的。解决方法:用js把禁止输入的readonly属性干掉就好了.以下举例说明:测试地址:http://www.sucaijiayuan.com/api/demo.php?url=/demo/20141108-1/测试代码:输出2016-8
2017-09-07 14:19:41
310
转载 第二十节:文件上传所有方法整理总结
文件转载:http://blog.csdn.net/huilan_same/article/details/52439546首先,我们要区分出上传按钮的种类,大体上可以分为两种,一种是input框,另外一种标签非input(就比较复杂,通过js、flash等实现)我们分别对这两种进行分析:1.input标签众所周知,input标签是可以直接send_keys的,这里
2017-09-07 11:51:18
561
1
转载 第十九节:下载文件
今天谈谈文件下载吧,很多人不会处理弹出的文件下载框,其实跟上传类似,可以用autoit和win32api解决,方法类似。今天讲讲更漂亮的一种处理办法,那就是指定下载路径,不弹出弹框,直接下载到指定路径。今天主要分享Firefox和Chrome的设置方法。Firefox 文件下载对于Firefox,需要我们设置其Profile:browser.download
2017-09-07 10:13:24
209
原创 第十八节:JS控制网页内嵌滚动条的滚动
内嵌滚动条的HTML文件内容: div.scroll{background-color:#afafaf;width:500px;height:100px;overflow:auto;}个人微信公众号:yoyoketang这是一个内嵌的div滚动条这是一个内嵌div:WebDiver 不能操作本地 Windows 控
2017-09-06 17:48:00
12395
转载 第十七节:switch_to.active_element 获取当前焦点元素
转载:http://blog.csdn.net/huilan_same/article/details/52338073switch_to.active_element返回的是当前焦点的对象,即返回WebElement对象。那么焦点是什么?大概可以这样理解:即网页上当前操作的对象(也就是你网页上光标的位置),比如,你鼠标点击到了一个input框,你可以在
2017-09-06 15:59:35
855
转载 第十六节:加载Firefox配置
前言有小伙伴在用脚本启动浏览器时候发现原来下载的插件不见了,无法用firebug在打开的页面上继续定位页面元素,调试起来不方便 。加载浏览器配置,需要用FirefoxProfile(profile_directory)这个类来加载,profile_directory既为浏览器配置文件的路径地址 一、遇到问题1.在使用脚本打开浏览器时候,发现右上角原来下载的插
2017-09-06 15:34:33
394
转载 第十五节:调用JS
前言 selenium并不是万能的,有时候页面上操作无法实现的,这时候就需要借助JS来完成了。常见场景:当页面上的元素超过一屏后,想操作屏幕下方的元素,是不能直接定位到,会报元素不可见的。这时候需要借助滚动条来拖动屏幕,使被操作的元素显示在当前的屏幕上。滚动条是无法直接用定位工具来定位的。selenium里面也没有直接的方法去控制滚动条,这时候只能借助JS了,还好se
2017-09-06 15:32:13
208
转载 第十二节:上传文件
对于 web 页面的上传功能一般会有以下几种方式。普通上传:普通的附件上传都是将本地文件的路径作为一个值放 input 标签中,通过form 表单提交的时候将这个值提交给服务器。插件上传:一般是指基于 Flash 与 JavaScript 或Ajax 等技术所实现的上传功能或插件。第一种:普通上传如果能找上传的 input 标签,那么基本都可以通
2017-09-06 14:19:54
252
转载 第十四节:单选框(radio)和复选框(checkbox)
网页上有时候遇到checkbox和radio,一般情况下这两种都是input标签,我们可以通过点击或者发送空格的方式进行选中实验网页代码:Checkbox:type="checkbox" value="cv1" name="c1">type="checkbox" value="cv2">type="checkbox" value="cv3" name="c1">type
2017-09-05 17:57:20
768
转载 第十三节:下拉选择框Select
selenium的下拉选择框。我们通常会遇到两种下拉框,一种使用的是html的标签select,另一种是使用input标签做的假下拉框。后者我们通常的处理方式与其他的元素类似,点击或使用JS等。而对于前者,selenium给了有力的支持,就是Select类。网页与源码截图如下:1.导入(import)你可以用以下方式导入:from sel
2017-09-05 17:44:35
1026
转载 第十二节 alert\confirm\prompt
不是所有的弹出框都叫alert,在使用alert方法前,先要识别出到底是不是alert。先认清楚alert长什么样子,下次碰到了,就可以用对应方法解决。alert\confirm\prompt弹出框操作主要方法有:text:获取文本值accept() :点击"确认"dismiss() :点击"取消"或者叉掉对话框send_keys() :输入文本值 --仅限
2017-09-05 14:32:56
347
转载 第十一节:多窗口切换
有时候需要在不同的窗口切换, 从而操作不同的窗口上的元素 。WebDriver 提供了 switch_to_window()方法可以切换到任意的窗口
2017-09-05 14:17:27
496
转载 第十节:定位以及切换frame(iframe)
在 web 应用中经常会遇到 frame嵌套页面的应用,而 WebDriver每次只能在一个页面上识别元素,对于 frame嵌套内的页面上的元素,直接定位是定位是定位不到的。frame标签有frameset、frame、iframe三种,frameset跟其他普通标签没有区别,不会影响到正常的定位,而frame与iframe对selenium定位而言是一样的,selenium有
2017-09-04 18:54:28
3190
转载 第九章:定位一组元素
有时候一个页面上有多个对象需要操作,如果一个个去定位的话,比较繁琐,这时候就可以定位一组对象。webdriver 提供了定位一组元素的方法,跟前面八种定位方式其实一样,只是前面是单数,这里是复数形式:find_elements 实例一:find_elements_by_css_selector()一、定位搜索结果 1.在百度搜索框输入关键字
2017-09-04 18:40:45
984
转载 第八节:等待
转载:http://blog.csdn.net/huilan_same/article/details/52544521selenium+python的等待分为三种:第一种:强制等待从字面意思就可以理解,管找没找到元素,都得等待设置的时长语法为:time.sleep(3) 说明:使用前提:导入time包语句说明:等待3秒,不管浏览器是否加载完成,程序都得等待3秒,3秒一到
2017-09-04 15:04:47
521
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人