UI自动化相关内容
1. Appium
1. 服务端 Node.js应用,在电脑上,用于WDA通信
2. 客户端 扩展的WebDriver协议库,用某个语音写case,将该语言扩展的WebDriver库添加到自己的环境中
2. 可以做什么
1. 方法
2. 找到元素后干什么:
1. 获点击事件 Click() driver.findElement(By.id(“com.systoon.toon:id/formula”)).click
2. 输入事件 Sendkeys() driver.findElement(By.id(“com.systoon.toon:id/et_phone_num”)).sendKeys(“18511022548”)
3. 滑动事件 Swipe() driver.swipe(int start-x, int start-y, int end-x, int end-y, int during)
4. 获取页面层级结构: driver.getpagesource()
5. 重启app driver.resetapp()
6. 启动app driver.lanchapp()
7. 获取元素属性值:
1. driver.findElement(By.name(“fiud”)). getAttribute(“value”);
2. driver.findElement(By.name(“fiud”)) . getAttribute(“isDisplayed”);
8. 滑屏
1. TouchAction touchAction = new TouchAction(ios_driver);
2. touchAction.press(startx, starty).waitAction(duration).moveTo(endx, endy).perform().release();
9. 获取元素位置
1. IosElement e = findElementsByClassName(className).get(index);
2. e.getLocation().getX();
3. e. isDisplayed();
10. 官方api地址:http://appium.github.io/java-client/
3. 基于现有测试框架写测试脚本
1. 测试脚本和Java层代码分离
2. 测试易于维护
3. 可重用性
4. 支持定位信息
1. Id 定位 (安卓特有的定位方式) index = “1” 默认为0
2. xpath定位
3. name 定位 index = “1” 默认为0
4. classname定位 index = “1” 默认为0
5. accessibilityId定位(安卓端对应的是安卓控件的content-desc属性值,ios对应的是name)
6. androidUIAutomator(安卓端特有的定位方式)
5. 常用标签
1. <testsuit></testsuit>属性值
1. 测试用例集标签,一个xml文件只有一个testsuit。测试用例要放到一个testsuit中
2. 属性值 sname="IM" reportName="IM" description="IM"
2. <testcase></testcase>
1. 测试用例标签,测试用例由一系列测试步骤组成,测试用例对应的一系列测试
2. 步骤放在一个testcase标签里。
3. 属性值:cname=“IM_01_能正常发送单聊消息” exec=“true” description=“发送单聊消息"
3. <condition><if></if><else></else><condition>
1. 判断标签,放在testcase标签里。可以只有if判断没有else。条件判断为真,则执行if里面包含的内容,为假则执行else里面包含的内容
2. 属性值:description:描述信息
4. <for></for>
1. 需要循环执行操作放在for标签中
2. 属性值 count:-1表示无限循环,具体数字代表循环对应次数,默认为0
3. description:描述信息
5. < capture ></ capture > 截图
1. 属性值: fileName:文件名称 description
6. < clear /> 清空输入框本文
1. 属性值:description:描述信息
7. <click/> 点击操作
1. 属性值 description:描述信息
8. < l_click/> 长按
1. 属性值:description
9. < xy_click /> 清空本文
1. 属性值:x:x坐标值 y:y坐标值description:描述信息
10. <Input /> 输入文本
1. 属性值:content :文本内容 description:描述信息
11. < input_repeat /> 输入字符后+次数
1. 用于:多次发送同样的消息,后添加次数字段用以区分
2. 属性值 content :文本内容,description:描述信息
12. < log /> 记录日志
1. 属性值: txt:记录日志内容 description
13. <open/> 打开浏览器:ios是safari,android是谷歌
1. 属性值:url:浏览器 description:描述信息
14. < partialCapture /> 部分截图
1. 属性值:fileName :文件名称 description:描述信息
2. a.根据坐标截图,x,y,height,weigth截图
3. b.根据定位方式截图,截图部分图片
15. < slide/>滑屏
1. 属性值 direction:LEFT,RIGHT,UP,DOWN,向四个方向滑动,description:描述信息
2. startx,starty,endx,endy:一个点向另一个点滑动
16. < slide_defined/> 滑屏
1. 属性值 a = 0, b = 0, c = 0, d = 0, e = 0, f = 0, g = 0, h = 0默认值,从屏幕b/a x, e/f y 滑到
2. c/d x,g/h y。 按屏幕比例滑屏 description
17. < slidetoend /> 滑到屏幕底部
1. 属性值: description
18. < slidetotop />滑到屏幕顶部
1. 属性值: description
19. < startup/>回到初始页面,安卓回到的是启动的activity,ios回到app主页
1. 属性值: description
20. < wait />强制等待
1. 属性值:time不设置默认为3s。 description
21. < wait_by/>等待元素加载
1. 属性值: time,该时间内找到则继续下面脚本执行,最长等待默认时间20秒。
22. < getpagesource />获取界面结构信息
1. 属性值: description
23. < getmessage />获取某位置的文本信息,例如获取第一个小组名称
1. 属性值: description
24. <a_equal/>断言字段,判断预期文本与某位置文本信息相等
1. 属性值: description
25. < a_contains />断言,判断包含预期文本
1. 属性值: description
26. < a_exist />断言,判断元素存在
1. 属性值: description
27. < a_notcontains />断言不包含
1. 属性值: description
28. < a_notexist />断言控件不存在
1. 属性值: description
29. < a_clickable />判断是否可点击
1. 属性值: description
30. <a_notequal/>断言字段,判断预期文本与某位置文本信息不相等
1. 属性值: description
6. case包含几个要素
1. 数据准备(尽量不依赖数据)
2. 具体操作步骤
3. 验证点,加断言
4. 注意事项:
1. 可执行性
2. 可反复执行
3. 稳定性,可加条件判断
4. 数据回收
网友评论