1.在浏览器中的console输入:帮助定位

> $x('xpath表达式')

> $('css表达式')

2.driver

> chrome driver: https://npm.taobao.org/mirrors/chromedriver

> firefox:https://github.com/mozilla/geckdriver/realeases/tag/v0.24.0

3.简易的页面性能

> raw_json = webdriver.execute_script("return JSON.stringify(window.performance.timing)"),返回的内容,比requests多,有些事它拿不到的

4.remote server

> 下载selenium server,启动

> 通过webdriver.remote()来连接到服务器

5.UI自动化测试策略

> 核心业务自动化

> 接口测试是否可以保证,可以,ui测试可以适当弱化

> 涉及用户交互的重要功能,仍然能需要使用UI自动化测试保证

6.测试痛点

> 快速迭代中自动化用例吃力

没有采用po模式,导致自动化用例维护成本大

对自动化框架掌握程度不够

> 测试内容太多导致手工测试无法充分覆盖

界面字段正确性

接口正确性:后端接口传输数据的变化和内容

专项测试回归难度大:内存泄漏,健壮性测试,弱网等  测试过程太多

回归工作量大,不回归又会漏测

改进:

>  自动化:覆盖主要业务的right path,缩小规模尽量降低维护成本

>  手工:覆盖新功能测试,探索性测试

> 遍历测试手段:code less:用例维护成本降到最低

automate:尽可能的自动化覆盖回归业务

自动遍历需求:可控,可定制

结果分析:点击前后截图对比,结果的数据建模,新老版本的diff,app结构思维导图展示

monkey:https://developer.android.com/studio/test/monkey

adb shell monkey -p com.ebo.home/com.ebo.home.Launcher --throttle 1000 --pct-touch 50 -v 500

> throttel,每个时间的间隔时间

> pct-touch,touch时间的占比

> -v  500,500次事件

> -s  指定种子值

monkeyrunner,功能较弱,使用python代码中调用java,不建议使用

Maxim:

高速uiautomator控件解析算法的Android Monkey, 每秒10-15个Action Event。实现快速DFS算法的Android Monkey , 每秒 5个Action Event。

git clone https://github.com/zhangzhao4444/Maxim.git
cd Maxim
adb push framework.jar /sdcard
adb push monkey.jar /sdcard
adb shell CLASSPATH=/sdcard/monkey.jar:/sdcard/framework.jar exec app_process /system/bin tv.p.test.monkey.Monkey -p com.xueqiu.android --uiautomatormix --running-minutes 5 -v -v

AppCrawler:

Usage: appcrawler [options]

  -a, --app <value>        Android或者iOS的文件地址, 可以是网络地址, 赋值给appium的app选项
-e, --encoding <value> set encoding, such as UTF-8 GBK
-c, --conf <value> 配置文件地址
-p, --platform <value> 平台类型android或者ios, 默认会根据app后缀名自动判断
-t, --maxTime <value> 最大运行时间. 单位为秒. 超过此值会退出. 默认最长运行3个小时
-u, --appium <value> appium的url地址
-o, --output <value> 遍历结果的保存目录. 里面会存放遍历生成的截图, 思维导图和日志
--capability k1=v1,k2=v2...
appium capability选项, 这个参数会覆盖-c指定的配置模板参数, 用于在模板配置之上的参数微调
-r, --report <value> 输出html和xml报告
--template <value> 输出代码模板
--master <value> master的diff.yml文件地址
--candidate <value> candidate环境的diff.yml文件
--diff 执行diff对比
-vv, --verbose 是否展示更多debug信息
--demo 生成demo配置文件学习使用方法
--help
示例
appcrawler -a xueqiu.apk
appcrawler -a xueqiu.apk --capability noReset=true
appcrawler -c conf/xueqiu.json -p android -o result/
appcrawler -c xueqiu.json --capability udid=[你的udid] -a Snowball.app
appcrawler -c xueqiu.json -a Snowball.app -u 4730
appcrawler -c xueqiu.json -a Snowball.app -u http://127.0.0.1:4730/wd/hub #生成demo例子
appcrawler --demo #启动已经安装过的app
appcrawler --capability "appPackage=com.xueqiu.android,appActivity=.view.WelcomeActivityAlias" #从已经结束的结果中重新生成报告
appcrawler --report result/ #新老版本对比
appcrawler --candidate result/ --master pre/ --report ./
java -jar appcrawler-2.4.0-jar-with-dependencies.jar --capability "appPackage=com.xueqiu.android,appActivity=.view.WelcomeActivityAlias"
java -jar appcrawler-2.4.0-jar-with-dependencies.jar --demo
#把生成的demo.yaml文件重命名demo_1.yaml
java -jar appcrawler-2.4.0-jar-with-dependencies.jar -c demo_1.yml
1.执行参数与配置文件
> capability设置:与appium完全一致
> testcase:用于启动app后执行基础测试用例
> selectedList:遍历范围设定
> triggerActions:特定条件触发执行动作的设置
执行参数比配置文件优先级别高
2.capability:
appPackage:""
appActivity:""
app:""
appium:"http://127.0.0.1:4723/wd/hub"
noReset:true
automationName:uiautomator2
dontStopAppOnReset:true
3.自动化支持testcase
>testcase的完整形态:
i.given:所有的先决条天,when:先决条件成立后的行为,then:断言集合
autoCrawl:true
testcase:
name:demo1
steps:
- when:
xpath://....
action:driver.swipe(1,2,3,4)
- when:
xpath://...
action:driver....
- xpath:登录
action:click
then:
- //*[contains(@text, "密码")]
testcase的简写形态:
xpath:对应when里的xpath
action:对应when里的action
定位模式:xpath,正则,包含
action:
back后退
backApp回退到当前的app,默认等价与back行为
monkey随机事件
xxx()执行代码
Thread.sleep(3000)
driver.swipe(1,2,3,4)
click
longTap
非以上所有行为是输入 xx ddd
4.自动遍历
SelectedList:指定遍历范围,看demo.yaml中包含,button,文本(其clickable=true),图片等
firstList:优先遍历
lastList:最后遍历
backButton:当素有元素都被点击后默认后退按钮
triggerAction:特定事件
xpathAttributes:xpath默认有哪些属性,一般要去掉instance
blackList:黑名单
maxDepth:最大遍历深度
5.参数
-c 指定配置文件
-o /tmp/1 指定输出结果路径

Part-Selenium-1的更多相关文章

  1. Python爬虫小白入门(四)PhatomJS+Selenium第一篇

    一.前言 在上一篇博文中,我们的爬虫面临着一个问题,在爬取Unsplash网站的时候,由于网站是下拉刷新,并没有分页.所以不能够通过页码获取页面的url来分别发送网络请求.我也尝试了其他方式,比如下拉 ...

  2. Selenium的PO模式(Page Object Model)[python版]

     Page Object Model 简称POM  普通的测试用例代码: .... #测试用例 def test_login_mail(self): driver = self.driver driv ...

  3. selenium元素定位篇

    Selenium webdriver是完全模拟用户在对浏览器进行操作,所有用户都是在页面进行的单击.双击.输入.滚动等操作,而webdriver也是一样,所以需要我们指定元素让webdriver进行单 ...

  4. selenium自动化基础知识

    什么是自动化测试? 自动化测试分为:功能自动化和性能自动化 功能自动化即使用计算机通过编码的方式来替代手工测试,完成一些重复性比较高的测试,解放测试人员的测试压力.同时,如果系统有不份模块更改后,只要 ...

  5. 幼儿园的 selenium

    from selenium import webdriver     *固定开头     b=webdriver.Firefox()              *打开火狐浏览器    browser. ...

  6. 使用selenium编写脚本常见问题(一)

    前提:我用selenium IDE录制脚本,我用java写的脚本,如果大家想看的清楚明白推荐java/Junit4/Webdriver 我用的是java/TestNG/remote control 1 ...

  7. 关于selenium RC的脚本开发

    第一.需要录制脚本,找个我也不说了.就是在firefox下下载一个selenium-IDE并且安装. 第二.在工具里找到selenium-IDE点击运行. 第三.默认是红色按钮点击状态的,接下来随便你 ...

  8. 基于python的selenium自动化测试环境安装

    1. Python2安装 官方网站:https://www.python.org/downloads/ (python3或新版本已经默认集成了pip包和path,安装的时候打勾就行,可以直接跳过下面第 ...

  9. Selenium+python 配置

    1. 安装python, www.python.org. 下载最新的python,应该是32位的.注意配置环境变量. 2. 安装PIP(pip是一个以Python计算机程序语言写成的软件包管理系统). ...

  10. selenium 使用action进行鼠标,键盘操作

    <!--test.html--> <html> <head> <title>Set Timeout</title> <script&g ...

随机推荐

  1. ETL优化

    ETL优化 Extract.Transform.Load,对异构数据源进行数据处理. 设立基线标准,根据硬盘.网络传输速度,多测测量得到数据量(m)/时间(s)的比值,找线性关系.建立基线作为调试和优 ...

  2. 滴滴与Uber都盯上拉美市场!一场惨烈竞争谁能胜出?

    创业者最怕的是什么?或许并不是在创业初期的艰难历程.毕竟在初期虽然会遇到很多磨难和众多竞争对手,但只要敢打敢拼就有胜出的可能.创业者最怕的或许是成为所属行业独角兽后,要面对势均力敌对手的凶猛攻击!大家 ...

  3. Firefly-RK3399 上编译安装 OpenCV 3

    原文转自:http://dev.t-firefly.com/thread-12143-1-1.html OS:官方固件 Xubuntu 16.04 1) Install 1.1) Required P ...

  4. html_js

    <!-- js的特点:别名脚本 -由浏览器内置的JavaScript引擎执行代码. -解析执行:事先不编译,逐行执行 -面向对象:内置大量的现成对象 适宜: -客户端的数据计算:不需要保存和提交 ...

  5. SpringCloud学习之Config分布式配置中心(八)

    统一配置中心概述 如果微服务架构中没有使用统一配置中心时,所存在的问题: 配置文件分散在各个项目里,不方便维护 配置内容安全与权限,实际开发中,开发人员是不知道线上环境的配置的 更新配置后,项目需要重 ...

  6. JS-表单验证二

    3.范围验证:年龄范围验证: <head> <meta http-equiv="Content-Type" content="text/html; ch ...

  7. Causal Corpus 事件因果关系语料统计

    Causal Corpus 事件因果关系语料统计 本文是对因果关系抽取领域数据库标注及开源情况的统计.除了对因果关系的标注,一些类似的语料也包含在内,从而为语料的使用提供灵活性,可以根据不同的目标选取 ...

  8. php魔术常量,_CLASS_,_METHOD_,_FUNCTION_

    _CLASS_: 返回当前类的类名 _METHOD_:返回当前类方法的方法名(并显示类的调用,类名::方法名) _FUNCTION_:返回当前函数的函数名 _FILE_:当前文件的绝对路径(包含_FI ...

  9. proto3 不支持内建类型的非空判断即 hasXXX

    proto3 移除了内建类型的非空判断方法 即代码生成工具不会为 bool int 等类型生成has方法 有使用过proto2 或者其它rpc 框架的人都知道使用has 方法去判断消息里的值是否设置, ...

  10. JavaScript 闭包究竟是什么JavaScript 闭包究竟是什么

    用JavaScript一年多了,闭包总是让人二丈和尚摸不着头脑.陆陆续续接触了一些闭包的知识,也犯过几次因为不理解闭包导致的错误,一年多了资料也看了一些,但还是不是非常明白,最近偶然看了一下 jQue ...