![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
python
朝天椒的夏天
软件测试,自动化,性能
展开
-
python之面向对象
面向对象有3大特征:封装,继承,多态封装即私有化,将类属性设置为私有,访问范围仅限类中,外界访问和修改通过get和set方法,并且修改属性需要遵循一定的规则class People: def __init__(self, name, age): self.name = name self.__age = age # 私有化属性 # 定义公...原创 2020-01-29 18:11:58 · 305 阅读 · 0 评论 -
python之类方法,静态方法
魔术方法class Test: # 魔术方法 def __init__(self, nickname, age): print('-----魔术方法,只要创建了对象就会自动调该方法') self.nickname = nickname self.age = agec=Test('花花',5)运行结果:-----魔术...原创 2020-01-25 21:56:25 · 201 阅读 · 0 评论 -
python之生成器
先来看几个推导式:列表推导式,集合推导式,字典推导式#列表推导式 格式:[表达式 for 变量 in 旧列表]#将0-100中的偶数加5,组成新的列表list=[x+5 for x in range(0,100) if x%2==0]print(list)#集合推导式 格式:{表达式 for 变量 in 旧列表}#类似列表推导式,在列表推导式基础上添加了一个去除重复项的功能l...原创 2020-01-11 17:13:41 · 277 阅读 · 0 评论 -
python之装饰器应用
装饰器的概念:1.装饰器的实现是由闭包支撑的;2.装饰器本质上是⼀个python函数,它可以在让其他函数在不需要做任何代码的变动的前提下增加额外的功能;3.装饰器的返回值也是⼀个函数的对象,它经常用于有切面需求的场景,实现路由传参,flask的路由传参依赖于装饰器,浏览器通过url访问到装饰器的路由,从而访问视图函数获得返回的HTML页面;装饰器应用场景:1.可以在外层函数加...原创 2019-12-21 16:33:14 · 258 阅读 · 0 评论 -
python之装饰器
1.装饰器的特点装饰器是在闭包上的升级,是传参为函数的闭包先来看下以下这段代码def decorate(func): #装饰器接收一个函数作为入参 print('外层打印测试') def inner(): #内部函数 func() #调用接收的函数 print('-------刷墙-------') print('内层加载完...原创 2019-12-21 16:10:16 · 347 阅读 · 0 评论 -
python之闭包
1.先看下闭包的特点闭包条件:1.外部函数中定义了一个内部函数2.外部函数有返回值3.返回的值是:内部函数名4.内部函数还引用外部函数的变量值因此最基础的闭包结构如下:#闭包def func1():#外部函数 a=100 #外部函数的变量 def inner_func1():#内部函数 b=99 #内部函数变量 print...原创 2019-12-21 15:19:41 · 843 阅读 · 0 评论 -
python使用PIL,pytesseract识别验证码图片(2)
pytesseract虽然功能很强大,但是现在验证码图片也越来越复杂,仅仅使用pytesseract中的方法pytesseract.image_to_string()去识别往往无法获得正确的验证码,本篇文章主要介绍怎么利用Python的图像处理模块PIL和OCR模块pytesseract来识别稍复杂的验证码。主要方法如下:1.遍历存放验证码的文件夹,找到png或jpg文件2.将图片进行...原创 2019-03-18 15:23:15 · 2155 阅读 · 1 评论 -
python GUI图形化编程-wxpython(1)
一、python gui(图形化)常用模块介绍: Tkinter :是python最简单的图形化模块,总共只有14种组建,(也叫Tk接口)是Tk图形用户界面工具包标准的Python接口。Tk是一个轻量级的跨平台图形用户界面(GUI)开发工具。Tk和Tkinter可以运行在大多数的Unix平台、Windows、和Macintosh系统。 Pyqt :是python最复杂也是使用最广泛的图...原创 2019-02-19 19:51:56 · 15794 阅读 · 1 评论 -
python GUI图形化编程-wxpython(2)-使用panel面板
在使用《python GUI图形化编程-wxpython(1)》的图形化编程中我发现一件很耗费时间的事情,当我在界面上新增或者修改元素时,我需要重新调整窗口的大小,还必须对之前的元素重新调整位置坐标,否则就会出现排版很杂乱的现象,总之就是页面上的元素不会随着窗口的大小进行自适应的调整尺寸。如下图:当窗口按照设定的尺寸展示时,排版还算美观而当我拖动改变窗口的大小时,页面元素是固定不动的...原创 2019-02-23 20:55:24 · 6790 阅读 · 0 评论 -
收藏一篇 Python 文本框操作命令(Tkinter )
原文地址:https://www.cnblogs.com/onlyfu/archive/2013/03/07/2947473.html转载 2019-02-18 09:47:57 · 548 阅读 · 0 评论 -
Python中self个人理解
#1.self代表类的实例,而非类class Stest: def p(self):#可将self理解为实例t print(self) print(self.__class__)t = Stest()#t为Stest的实例t.p()运行结果:<__main__.Stest object at 0x00000000021D8860>...原创 2019-01-14 10:03:39 · 21938 阅读 · 6 评论 -
廖雪峰python实战篇的学习记录D1
1.安装python3环境因为我电脑已经安装了python2,而且使用robot做自动化测试时需要用到python2的环境,所以并不想卸载掉python2,看了网上有解决一台电脑同时安装2个版本的python的解决方法,亲测有效,详细文章链接如下:一台计算机如何安装2个版本的python,互不影响呢2.搭建开发环境先遇到了一个问题:pip3 install aiohttp提示“fat...原创 2018-08-08 16:59:54 · 309 阅读 · 0 评论 -
双十一0点抢购python脚本测试
该脚本适合商品的双十一秒杀活动,具体实现方式如下:在双十一0点之前提前运行脚本,打开网页,登录(经测试手动打开网页输入用户名和密码后不需要进行滑块验证,使用脚本打开网页每次都需要进行滑块验证,暂时没有找到啥原因,所以改为等待10s,手动扫描二维码登录),滚动页面找到需要操作的元素,勾选尺码,颜色等信息。启动监听器,设置监听时间间隔和监听持续时间,等时间到达0点时,点击立即购买,提交订单。...原创 2019-02-19 20:45:05 · 13465 阅读 · 7 评论 -
Python 实现文字聊天室-功能拓展
本文是在实验楼-Pyhon实现文字聊天室的功能基础上进行的拓展功能开发具体增加功能如下:1.增加对指定用户发送消息功能2.增加不同的frame框来分别显示发送和接收的消息3.增加msg窗口来显示系统提示消息,如上下线消息,在线用户消息4.使用panel改写设计客户端的控件展示5.聊天窗口的title增加显示当前的用户名称主要修改代码为客户端代码,服务器代码修改略少。...原创 2019-03-05 21:04:37 · 3099 阅读 · 3 评论 -
python使用Tesseract,pytesseract图片处理识别(1)
1.安装tesseract-ocr,tesseract-ocr为google的ocr识别引擎,如:tesseractocr-setup-3.05.01.exe双击程序安装即可,可以勾选Additional language data(download)选项来安装OCR识别支持的语言包,但下载语言包很慢,可以直接从https://github.com/tesseract-ocr/tessdata...原创 2019-03-14 16:52:41 · 5128 阅读 · 0 评论 -
python使用向量空间,训练集识别验证码图片(3)
识别验证码的方式多种多样,我们经常需要根据不同的验证码设计不同的识别方式,本文提供另外一种方式,使用向量空间,对比训练集的方式来识别验证码,相对使用pytesseract识别验证码可能会稍显笨拙,但是该方法对有些验证码图片也可以正确识别,所以权当提供一种新的思考问题的思路。主要方法如下:1.首先将验证码图片转化为8位像素模式,即有2的8次方,256种颜色组合,再生成一张新的同样大小的白底的...原创 2019-03-18 17:27:21 · 1360 阅读 · 7 评论 -
解决CMD命令行窗口不显示颜色问题python
最近在做一个CMD命令行窗口显示不同颜色的字体的功能时,发现按照网上的方法设置均不生效1.比如最常见的方法,print("\033[0;30;40m\tHello World\033[0m")我执行的结果如下:解决方法如下:需从colorama中导入init#-*- coding:utf-8 -*-from colorama import initinit(autore...原创 2019-04-01 11:18:45 · 7829 阅读 · 5 评论 -
Python代码实现2048-功能拓展
本文是在200 行 Python 代码实现 2048的功能基础上进行的拓展功能开发具体增加功能如下:1.增加支持方向键2.达到胜利分数值可以选择继续游戏或者结束游戏3.在控制台输出不同的颜色4.连接sqlite,将最高成绩存入其中,每次启动游戏时读取完整代码如下:#-*- coding:utf-8 -*-import cursesfrom random import ...原创 2019-04-01 11:27:09 · 3385 阅读 · 0 评论 -
解决wxpython报错窗口一闪而过,无法调试的问题
wxpython报错窗口一闪而过python代码中import wx后,不管是使用eclipse还是命令行窗口运行,报错窗口出现一闪而过,无法调试查看报错日志的现象。解决方法:1.命令行指令由python test.py改成python -i test.py2.eclipse中实例化wx.app时,加入参数redirect=False,如:app = wx.App(redirect...原创 2019-04-11 10:10:28 · 1288 阅读 · 0 评论 -
python爬虫-豆瓣数据爬取-正则匹配
1.查看豆瓣网站的爬虫协议(robots.txt)输入https://www.douban.com/robots.txt,显示如下:User-agent: *Disallow: /subject_searchDisallow: /amazon_searchDisallow: /searchDisallow: /group/searchDisallow: /event/se...原创 2017-11-06 11:07:14 · 3209 阅读 · 0 评论 -
廖雪峰python实战篇的学习记录D2
#导入logging模块,通过logging.basicConfig函数对日志的输出等级做相关配置import logging;logging.basicConfig(level=logging.INFO)import asyncio, os, json, timefrom datetime import datetimefrom aiohttp import webdef in...原创 2018-08-10 15:07:01 · 389 阅读 · 0 评论 -
python爬虫基础-HTMLParser
首先,Python提供了HTMLParser来非常方便地解析HTML,只需简单几行代码,如下:from HTMLParser import HTMLParserfrom htmlentitydefs import name2codepointclass MyHTMLParser(HTMLParser): def handle_starttag(self, tag, attrs...原创 2018-05-20 18:14:14 · 5734 阅读 · 0 评论 -
selenium+robot接口测试:post返回结果取值
post请求的返回结果我们使用log ${addr.content}打印出结果,返回的结果一般为json格式的对象,需要转换为字典形式取值。如返回结果为:{"message":"登录成功!","status":"1","data":"141403007d970100f5cb7bcb6d5048e6b1c0ab19500d41b2"}方法一:${data} T...原创 2017-11-29 11:13:51 · 4203 阅读 · 0 评论 -
pyhton利用classname定位
有时候我们定位元素时,会发现该元素的属性无id,无name,这时就需要考虑其他的定位方式,比如对class属性进行定位1.class属性值中间没有空格时使用robot定位方式如下:在eclipse中python脚本如下:chrome.find_element_by_class_name('form-control').send_keys('998866')2.c...原创 2017-11-16 16:36:35 · 999 阅读 · 0 评论 -
python学习记录-Dataframe
#-*-coding:utf-8-*-import pandasfrom numpy.random.mtrand import np#创建一个dataframedates=pandas.date_range('20170101',periods=7)ss=pandas.DataFrame(np.random.randn(7,3),index=dates,columns=['a','b...原创 2017-11-21 15:35:25 · 733 阅读 · 0 评论 -
Robotframework使用DatabaseLibrary连接mysql数据库
进行数据库操作,需要安装相应的操作库。DatabaseLibrary是常用的库之一,它能兼容MySQL、Oracle、sql server、DB2、sqlite3等等数据库。Python 操作不同的数据库,还需要安装相应的数据库驱动。一、在线安装命令 pip install robotframework-databaselibraryMySQL数据库驱动在线安装命令 ...原创 2017-11-29 18:12:27 · 8216 阅读 · 1 评论 -
python学习记录:元组
元组常用函数len(t) 计算元组t的元素个数max(t) 返回元组t中元素的最大值min(t) 返回元组t中元素的最小值tuple(seq) 将序列seq转换为元组案例:# -*-coding:utf-8 -*-#len(t) 计算元组t的元素个数t=(1,2,3)print len(t)#max(t) 返回元组t中元素的最大值print max(t...原创 2017-10-26 17:31:06 · 342 阅读 · 0 评论 -
python学习记录:列表
列表常用方法l.append(obj) 在列表l末尾添加新的对象l.count(obj) 统计某个元素在列表l中出现的次数l.extend(seq) 在列表l末尾一次性追加另一个序列seq中的多个值(用新列表扩展原来的列表)l.index(obj) 从列表l中找出某个值第一个匹配项的索引位置,索引从0开始l.insert(index, obj) 将对象obj插入列表l中索引为i...原创 2017-10-26 17:22:51 · 334 阅读 · 0 评论 -
python学习记录:字符串
字符串常用方法s.capitalize() 返回字符串s首字母大写其余小写的形式s.lower() 返回字符串s的小写形式s.upper() 返回字符串s的大写形式s.title() 返回字符串s的标题形式即单词首字母大写形式s.format(*args, **kwargs) 格式化字符串操作s.count(sub[, start[, end]]) 返回指定字符在[指定位置...原创 2017-10-26 17:09:43 · 205 阅读 · 0 评论 -
python学习记录:序列
(1) 序列的标准类型运算<、>、<=、>=、==、!= 值比较is、is not 对象身份比较and、or、not 逻辑运算案例:#<、>、<=、>=、==、!= 值比较print 1>2print 4<9print 2<=2print 5>=8print 1==1print 'a'!='b...原创 2017-10-26 15:34:29 · 271 阅读 · 0 评论 -
selenium+robot接口测试:接口传参中文报错
RF中,中文默认是以unicode字符编码形式存在,入参有中文时,传递unicode字符会造成入参错误。解决方案:修改配置文件unic.py该文件,RF安装方式的不同,存在的路径也不相同,如下\Python27\Lib\site-packages\robotframework-3.0.2-py2.7.egg\robot\utils或者Python27\Lib\site-packag...原创 2017-11-24 17:12:10 · 1770 阅读 · 1 评论 -
appium通过坐标定位元素
用appium做自动化时发现,有一些元素无法通过uiautomatorviewer进行定位,比如h5页面元素或者有的app元素在uiautomatorviewer中的属性没有唯一标识,这种情况下就只能通过相对坐标来进行定位了。如何获取元素的坐标呢?具体方法:手机设置--开发者选项--指针位置开启指针位置之后,点击手机屏幕就会显示该位置的具体坐标,这样就获取到了元素的绝对坐标,然后通过w...原创 2018-03-23 16:23:23 · 23035 阅读 · 1 评论 -
Appium+python(4)安卓真机输入框隐藏处理
输入框隐藏处理:(1)# unicode编码方式发送字符串desired_caps["unicodeKeyboard"] = "True"# resetKeyboard是将键盘隐藏起来desired_caps["resetKeyboard"] = "True"(2)在要操作元素前输入:driver.hide_keyboard()#隐藏键盘...原创 2018-03-09 16:59:34 · 874 阅读 · 0 评论 -
Appium+python(3):解决APP内嵌H5页面元素无法定位问题
测试app的时候,我们知道可以通过UI AutomatorViewer进行元素定位UI AutomatorViewer元素定位见《Appium+Genymotion+robotframework+python:Android元素定位》但是很多app中都会内嵌h5页面,这个时候定位就会变成下图这样:只能定位整个页面,无法定位到单独的元素。那么怎么才能够定位到h5页面的元素呢。...原创 2018-03-09 16:20:15 · 11933 阅读 · 6 评论 -
Appium+python(1):python运行真机App程序示例
# -*- coding: utf-8 -*-from appium import webdriverimport timefrom appium.webdriver.mobilecommand import MobileCommanddesired_caps = { 'platformName': 'Android', 'deviceNam...原创 2018-03-09 15:04:26 · 3131 阅读 · 1 评论 -
Appium+python(2):Appium(客户端版)解决每次运行Android,都安装Appium Setting和Unlock的方法
在android机型上每次运行测试用例时都会在手机上提示需要安装AppiumSetting以及Unlock,并且安装过程需要用户手动在app上确认,即使测试机上已经安装了这两个组件,运行appium也会要求安装,对于测试以及脚本的调试来说非常不便。查看appium打印的log,可以查看到以下日志:/Applications/Appium.app/Contents/Resources/nod...原创 2018-02-28 14:35:43 · 4127 阅读 · 0 评论 -
RobotFramework 接口测试-不定参数问题
在使用rf做接口测试时,我主要是通过excel来保存测试数据,模板如下:第1列是用例名称简单说明,第2列为接口url,第3+n列是接口入参,最后二列为返回值status,和返回data中的参数固定行列值的数据我们可以很方便通过指定行列值来获取,难点是,每个接口的入参个数不固定,怎样才能获取到入参数据呢?我的思路是,先获取该sheet页中总列数n=6,则可以算出入参的下标为2至n-1...原创 2018-02-27 16:30:27 · 4546 阅读 · 0 评论 -
robot接口测试写入数据库中文乱码
前段时间在用robot做接口测试时,发现一个问题,如果接口入参有中文时,写入数据库的中文字符显示为乱码,首先确认是编码问题,然后我在接口的头文件中设置Content-Type=application/x-www-form-urlencoded;charset=utf-8;将中文字符转码成utf-8或gbk;设置数据库的编码格式;等等,都没有解决这个问题。我的环境是:数据库mysql,pytho...原创 2018-01-24 17:40:00 · 935 阅读 · 0 评论 -
Robotframework之Run Keyword And Return Status,解决判断页面是否有弹窗的问题
我们测试的项目经常会遇到业务流程有多种分叉处理的场景,比如一个系统,有电话权限的用户登录成功后会提示进行电话登录,没有电话权限的用户登录后直接跳转到首页,这时自动化需要处理的测试场景就是,用户登录后先判断是否出现电话弹窗,从而进行不同的业务流程操作。操作流程图如下:解决方法:使用Run Keyword And Return Status关键字,该关键字会返回true或fal...原创 2017-12-12 20:37:54 · 10332 阅读 · 2 评论 -
python爬虫-豆瓣爬取数据保存为html文件
接《python爬虫-豆瓣数据爬取-正则匹配》中的案例五,将爬取的豆瓣租房信息网址和标题保存为html文件。脚本修改如下:# -*-coding:utf-8 -*- import requests import re from bs4 import BeautifulSoup #直接用正则表达式找出链接中包含https://www.douban.com/gro...原创 2017-11-09 17:41:14 · 6230 阅读 · 0 评论