自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

我去热饭的博客

自动化测试工程师

  • 博客(32)
  • 资源 (3)
  • 收藏
  • 关注

原创 分享一个火狐浏览器firefox的所有版本所有平台所有国家的地址,一定要收藏好哦^_^

http://ftp.mozilla.org/pub/firefox/releases/ 1。进去首先看到的就是各种版本,从最早的版本开始,然后选一个自己喜欢的。 2。然后选择版本,mac 也有的 3。最后选择 zh-cn

2016-11-29 17:35:35 1533

原创 MAC 启动谷歌浏览器,忽略标记提示

# -*- coding:utf-8 -*-from selenium import webdriverchromedriver="/Users/zijiawang/chromedriver"from selenium import webdriveroptions = webdriver.ChromeOptions()options.add_experimental_option("ex

2016-11-29 17:12:09 674

原创 appium小范例

#coding=utf-8from appium import webdriver #导入包desired_caps = {} # 声明一个appium服务的设置集合desired_caps['platformName'] = 'Android' #指定安卓desired_caps['platformVersion'] = '4.4.2' #安卓版本desired_caps['devic

2016-11-18 14:36:27 686 2

原创 自己测试过程中总结的易忽略的测试点和经验--持续更新中

1.app多语言测试中,弹窗一般会出现居中问题。德语和法语容易在按钮和固定大小的控件上超出长度 2.web测试中,对各个输入框的报错提示可能会有重叠情况。 3.自动化测试中,页面如果刷新了,控件就得重新定位。所以定位的代码放在哪很重要 4.网页中的下拉列表多数是假的下拉列表。也就是正常的控件,需要进行鼠标停留或点击等操作才会出现的。当出现真的下拉列表,html语言必然是

2016-11-18 11:29:26 2251 4

原创 抓包工具双重代理

用charles工具可以进行双层代理设置。 应用场景:公司内测等情况下,需要手机挂上xxxx:xxxx的代理,这时怎么抓包呢? 1.用charles的-proxy-external proxy setting 2.选中use external…. 3.如果是http就选中web proxy(http),如果是https就选中secure web proxy(https) 4.在弹窗右侧填入

2016-11-15 18:00:08 1442

原创 python连接mysql数据库

import MySQLdb conn = MySQLdb.connect(host=”localhost”,user=”root”,passwd=”“,db=”mytest”,charset=”utf8”) cursor = conn.cursor() sql=”select * from xxx where xx=%s”

2016-11-15 15:44:35 575

原创 连接excel表

目前我所搜集到的只有三种,欢迎补充! 方法一: SZ=xlrd.open_workbook(“chaxun.xls”) sz=SZ.sheet_by_name(“Sheet1”) ww=copy(SZ) ww.get_sheet(0).write(1,1,”asdasd”) nrows=sz.nrows os.remove(“chaxun.xls”) ww.save(“chaxun.

2016-11-15 15:43:46 552

转载 wxpython的常用方法

import wx app = wx.App() win = wx.Frame(None,title=u”主界面”,size=(xxx,xxx),pos=(xxx,xxx)) :设置主界面 wx.Frame.Setmaxsize((xxx,xxx)) :设置最大长宽 win.Hide()

2016-11-15 15:42:38 1818

原创 python操作计算器的代码demo

操作计算器 先安装pywin32模块 import win32api,win32gui, win32con import win32com.client shell = win32com.client.Dispatch(“WScript.Shell”) shell.Run(“calc”) win32api.Sleep(1000) shell.SendKeys(“200{+}”) 计算器

2016-11-15 15:39:59 1057

原创 Selenium的下拉列表定位

网页中的下拉列表多数是假的下拉列表。也就是正常的控件,需要进行鼠标停留或点击等操作才会出现的。 当出现真的下拉列表,html语言必然是这种。 需要先进行导入select方法 from selenium.webdriver.support.ui import Select em=wzj.find_element_by_….(“…”) #这个一定要选到 上 aa=Select(em)

2016-11-15 15:39:25 849

原创 给python脚本打包成.exe

打包用pyinstaller,下载后直接解压 需要下载并安装pywin32 对应64位或32位的 然后把a.py放到pyinstaller中,运行cmd,进入pyinstaller的目录 输入 python pyinstaller.py a.py 然后再C盘的 C:\Python27\Lib\site-packages\selenium-2.47.1-py2.7.egg 下的整个sele

2016-11-15 15:38:14 908

原创 Selenium的模拟鼠标和键盘演示

鼠标动作需要导入包:from selenium.webdriver.common.action_chains import ActionChains具体写法:ActionChains(wzj).context_click(qqq).perform()鼠标双击.double_click() 鼠标右键.context_click() 鼠标悬停.click_and_hold(某元素) 括号内不写就

2016-11-15 15:36:49 2086 1

原创 CSS和xpath定位demo

CSS样式定位 find_element_by_css_selector(“a[id=\”kw1\”]”) find_element_by_css_selector(“a[name=\”wd\”]”) find_element_by_css_selector(“a[title=\”web\”]”) find_element_by_css_selector(“a.RecycleBin”)

2016-11-15 15:35:15 666

原创 selenium操作元素时的实用方法

1.判断元素的属性if i.get_attribute(‘type’) == ‘checkbox’ 2.获取当前窗口的坐标 driver.get_window_position 获取当前窗口的长宽 driver.get_window_size 获取元素坐标 driver.find_element_by_xpath(“//*[@id=’tablechart’]/tbody/tr[14]/t

2016-11-15 15:34:41 2645 1

原创 精心整理python自动化测试小技巧三

61.字符串模板 print “aaa”.substitute(aaa=”haha”)等价于上面的元组替换substitute非常严谨,如果后面括号没有aaa则会报错safesubstitute则不报错但会原样输出{aaa}”.substitute(aaa=”haha”) 等价于 上面的元组替换 substitute非常严谨,如果后面括号没有aaa则会报错 safe_substit

2016-11-15 15:21:07 1391 1

原创 精心整理python自动化测试小技巧二

31.字典的查找默认函数:dict.setdefault(“键”,值) 如果找不到此键就返回后面的值 32.浅拷贝:[:] list dict() copy 深拷贝:import copy a=copy.deepcopy(b) 33.在for循环中,xrange()比range()更好,因为x不会创建列表,然后再迭代,而是直接迭代。 34.人工触发异常

2016-11-15 15:08:43 1253 2

原创 精心整理python自动化测试小技巧一 (最好ctrl+f直接搜关键字)

截图 from datetime import * wzj.get_screenshot_as_file(u”D:/save_screenshot/%s.png” % datetime.now().strftime(“%Y%m%d.%H%M%S.%f”)[:-3]) 2.创建静态方法: 在类的函数下,foo=staticmethod(方法名) 3.创建类方法: 在类下,foo=c

2016-11-15 15:03:30 2366 2

原创 python装饰器

关于装饰器: 如果下面有类的话,第一层接收的是方法本身,第二次自动接收类,返回需要返回 方法本身(类)def log(func): print func.__name__,"1" def ww(a): print a return func(a) return wwclass Demo(): @log def test_zzz(

2016-11-15 14:45:02 328

转载 多线程的小demo

转自虫师import threadingfrom time import ctime,sleepimport timefrom selenium import webdriverdef music(): for i in range(100): print i time.sleep(1)t = threading.Thread(target=mus

2016-11-15 14:33:01 297

原创 PYTHON的http请求,post,get,delete,put

这些都是我工作中常用的,整理出来,方便忘了的时候直接找到用。1.post: url = “” body = {“email”:email } pa = json.dumps(body) req = urllib2.Request(url, pa) req.add_header(‘Content-Type’,’application/json

2016-11-15 14:24:06 4209

原创 python发送邮件,亲测可用。

1.首先要引入必要的包。 import smtplib from email.mime.text import MIMEText from email.MIMEMultipart import MIMEMultipart import datetime2.定义发送邮件函数 def Send_Mail (Message): TODAY = datetime.d

2016-11-15 14:15:25 480

原创 python字符转码问题-持续更新

1.往excel表中写中文: 加u 或者unicode("阿萨德","utf-8") 2.代码前一般加# -*- coding:utf-8 -*- 3.从web上获取的字符中特殊符号如果转码错误可以加忽略方法。如网站首页下方的©

2016-11-15 14:12:33 1100

原创 selenium浏览器相关小技能-持续更新

1.启动火狐浏览器带插件: profileDir = “C:\Users\hyx\AppData\Roaming\Mozilla\Firefox\Profiles\mq7kifz3.default” profile = webdriver.FirefoxProfile(profileDir) wzj = webdriver.Firefox(profile) wzj.get(“h

2016-11-15 14:01:13 437

原创 brew命令安装失败

官网的提示有bug,实际上是权限问题。修改usr/local 的权限即可。官网提示修改成755,如果不行就考虑修改成775,第二数字代表同组其他成员权限。 sudo chown -R $USER /usr/local 775

2016-11-15 13:34:18 663

原创 python永久存储模块

永久存储模块:pickle,marshal pickle.dump() 存 pickle.load() 取

2016-11-15 13:30:34 873

原创 unittest常用小技能-持续更新

python版本的unittest测试框架很好用。虽然看过完整的所有功能,但是发现日常工作中常用的就那么几个。开始整理,忘了很多了,边想起边加进来。无条件跳过用例unittest.skip('')为真跳过用例unittest.skpiIf(3>2)主动标记为失败unittest.Failure('')用例失败后自动重跑的函数方法 def log(n): def decorato

2016-11-15 13:27:42 1240

原创 appium小知识-持续更新

整理了一些常用的小命令退出appium,每次脚本结束后,记得退出appium服务,不然下次启动会报错session不一样了。driver.quit()appium1.4版本以上可以在输入框输入中文,需要加入两行desired_caps["unicodeKeyboard"] = "True" desired_caps["resetKeyboard"] = "True" 启动了appium的默认键

2016-11-15 11:44:05 2162 1

原创 python+appium的物理按键代码

代码就一句driver.keyevent()括号内填入的是物理按键的数字代号代号表: KEYCODE_CALL 拨号键 5 KEYCODE_ENDCALL 挂机键 6 KEYCODE_HOME 按键Home 3 KEYCODE_MENU 菜单键 82 KEYCODE_BACK 返回键 4 KEYCODE_SEARCH 搜索键 84 KEYCODE_CA

2016-11-15 11:30:18 8925

原创 appium获取屏幕分辨率

分辨率有助于用坐标定位,很多控件在不同分辨率的手机上的坐标往往不一样。所以脚本中对坐标定位的控件,应先获取手机的分辨率,然后在用一台标准正确的手机的分辨率与控件坐标的固定对比值和标准误差区域来 代入来算出不同分辨率下该控件的位置,进而进行定位和操作等。 driver.manage().window().getSize().height driver.manage().window().ge

2016-11-15 11:27:48 9608 1

原创 用python同时启动多个appium,并让多个手机同时执行脚本

首先你要连接好多个手机设置好已经连接好的手机的ip列表ipp = ['192xxx','192xxx']杀掉之前所有appium进程subprocess.Popen('killall node',shell = True)声明一个方法def start(ip):调用时需要把ipp传入在方法中写for循环,循环内循环内用传入的ip来启动appium服务,注意要用不同的端口号启动,相差2以上在

2016-11-15 11:14:30 19222 8

原创 用python纯代码启动appium服务

自己的是mac系统,所以appium服务的main.js地址根据自己实际情况来写吧。 1.首先你要已经连接了多个手机 2.然后就是脚本中先杀掉appium服务,以便重启。 subprocess.Popen(‘killall node’,shell=True) 3.启动appium服务,主要是启动main.js。参数可以参考本人其他文章。 subprocess.Popen(‘/Appli

2016-11-15 10:53:54 4039

原创 ADB的简单命令-持续更新

欢迎使用Markdown编辑器写博客本Markdown编辑器使用StackEdit修改而来,用它写博客,将会带来全新的体验哦:Markdown和扩展Markdown简洁的语法代码块高亮图片链接和图片上传LaTex数学公式UML序列图和流程图离线写博客导入导出Markdown文件丰富的快捷键快捷键加粗 Ctrl + B 斜体 Ctrl + I 引用 Ctrl

2016-11-15 10:33:06 493

uiautomatorviewer 可支持安卓android 8.0 - 12.0 的四个jar包

tools/lib中ddmlib、ddms、ddmuilib 、uiautomatorviewer这四个jar包 解压后,把里面的四个jar包文件单独复制到 tools/lib文件夹进行替换即可。 这样就可以支持安卓 8.0以上的 元素定位了。非常好用!

2022-03-30

htmltestrunner完美兼容python3,已解决print无法显示在html报告中的问题

htmltestrunner完美兼容python3,已解决print无法显示在html报告中的问题。亲自修改并通过测试

2018-04-29

HTMLTestRunner汉化版

汉化后的htmltestrunner,用于python的unittest框架,新加入了自动显示提交报告人名字,操作系统等功能,只需要下载后,解压了,把文件夹覆盖sitepackages里的原htmltestrunner即可,玩自动化测试的小伙伴们抓紧了!

2017-01-09

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除