手机自动化测试(7)--appium代码使用
2015-11-16 17:17
459 查看
1安装类
2代码类
2.1 架包引入
(1)参照 Appium环境搭建
2.2 启动篇
(2)appPackage参数和appActivity参数是可以在系统里面唯一定位app启动页面,可以不用使用app参数
(3)URL是指的服务端
2.3 API篇
(1)element.getCenter() 获取控件中心点坐标
(2)element.getLocation() 获取控件起始坐标(左上角坐标)
(3)element.getSize() 计算出控件大小。值 = 终点坐标X-起点坐标X,终点坐标Y-起点坐标Y
(4)driver.swipe(startx, starty, endx, endy, duration) 滑动(起点X坐标,起点Y坐标,目的X坐标,目的Y坐标,滑动时间)
(5)driver.pressKeyCode(key) 模拟手机按键(比如返回键得KYE值就是4)
(6)driver.longPressKeyCode(key) 模拟手机长时间按键(比如长按home键)
(7) driver.scrollTo("name") 翻页找到list里面值为name的控件
(8)driver.tap(fingers, x, y, duration) 敲击(x,y)点,duration*5毫秒后松开,如此重复fingers次。
(例如点击一次20,20:tap(1, 20, 20, 0))
(9)TouchAction 手势
waitAciton 等待一段时间
press(x,y) 按下手指
longpress(x,y) 长按
moveTo(x,y) 移动
release() 抬起手指
cancel() 取消本次手势串
perform() 发送本次手势串请求
tap就是press+release+perform
(10)元素查找
2.4 等待页面打开
![](https://img-blog.csdn.net/20151116182955705?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
客户端将我们的各种指令通过http请求发送到服务端APPIUM,appium再将指令解析出来,调用对应的手机接口,完成各种操作。
2代码类
2.1 架包引入
(1)参照 Appium环境搭建
2.2 启动篇
private AndroidDriver<AndroidElement> driver; @Before public void setUjp() throws Exception { // set up appium DesiredCapabilities capabilities = new DesiredCapabilities(); capabilities.setCapability("deviceName", "Android Emulator"); capabilities.setCapability("platformVersion", "4.4"); capabilities.setCapability("appPackage", "com.example.android.apis"); capabilities.setCapability("appActivity", "com.example.android.apis.ApiDemos"); try { driver = new AndroidDriver<>(new URL("http://127.0.0.1:7922/wd/hub"), capabilities); } catch (Exception ex) { System.out.println(ex.getMessage()); throw ex; } }(1)定义driver对象需要使用AndroidDriver而不能是AppiumDriver,原因是AndroidDriver附加有一些特殊方法,用例里面需要使用,例如pressKeyCode
(2)appPackage参数和appActivity参数是可以在系统里面唯一定位app启动页面,可以不用使用app参数
(3)URL是指的服务端
2.3 API篇
(1)element.getCenter() 获取控件中心点坐标
(2)element.getLocation() 获取控件起始坐标(左上角坐标)
(3)element.getSize() 计算出控件大小。值 = 终点坐标X-起点坐标X,终点坐标Y-起点坐标Y
(4)driver.swipe(startx, starty, endx, endy, duration) 滑动(起点X坐标,起点Y坐标,目的X坐标,目的Y坐标,滑动时间)
(5)driver.pressKeyCode(key) 模拟手机按键(比如返回键得KYE值就是4)
(6)driver.longPressKeyCode(key) 模拟手机长时间按键(比如长按home键)
(7) driver.scrollTo("name") 翻页找到list里面值为name的控件
(8)driver.tap(fingers, x, y, duration) 敲击(x,y)点,duration*5毫秒后松开,如此重复fingers次。
(例如点击一次20,20:tap(1, 20, 20, 0))
(9)TouchAction 手势
touch.tap(x, y).waitAction().press(x, y).longPress(element).waitAction(1000).moveTo(x, y).release().perform(); touch.tap(x, y).waitAction().press(x, y).longPress(element).waitAction(1000).moveTo(x, y).release().cancel();tap 敲击
waitAciton 等待一段时间
press(x,y) 按下手指
longpress(x,y) 长按
moveTo(x,y) 移动
release() 抬起手指
cancel() 取消本次手势串
perform() 发送本次手势串请求
tap就是press+release+perform
(10)元素查找
//弹出单选框 //appium自带方法定位,先用classname定位到一组元素,再到包含自己控件的元素里面 用classname定位到自己的控件 List<AndroidElement> text = driver.findElementsByClassName("android.widget.TableRow"); text.get(7).findElementByClassName("android.widget.TextView").click();
2.4 等待页面打开
<span style="font-size:14px;"> WebDriverWait wait = new WebDriverWait(driver, 60); AndroidElement e = wait.until(new ExpectedCondition<AndroidElement>() { @Override public AndroidElement apply(WebDriver arg0) { // TODO Auto-generated method stub AndroidElement ae = driver.findElementById("com.duguang.baseanimation:id/tv_hint"); if (ae.getText().equals("上滑可以进入首页")) return ae; else return null; } });</span>3 APPium的机制
客户端将我们的各种指令通过http请求发送到服务端APPIUM,appium再将指令解析出来,调用对应的手机接口,完成各种操作。
相关文章推荐
- ResourceBundle和ObjectInputStream、ObjectOutputStream使用详解
- Android 5.1 Gallery2编译报错make: *** No rule to make target `out/target/product/techain6572_wet_l/obj/S
- UnityTestTool实用解释
- Scrollview 嵌套 RecyclerView 及在Android 5.1版本滑动时 惯性消失问题
- Android中的Touch事件处理
- iOS使用AFNetworking上传图片或者文件
- Android使用单元测试
- iOS-----使用AddressBook添加联系人
- Android动画(Android开发艺术探索笔记)
- android 滑动菜单之SlidingMenu
- 解决从服务器获取的数组是 __NSCFConstantString以及""没有空格字符串的问题
- Android 时间优化和内存优化
- iOS- 如何使用Alcatraz来高效的管理Xcode-Plugin(Xcode插件)
- Android中的自定义界面的Dialog
- Android开发工具常用快捷键大全
- Hbuilder开发HTML5 APP之图标和启动页制作
- 控件,App.config文件,数据库,之间的联系
- Unity5 发送广播与消息的探索
- swift学习笔记->基础类型
- Android(13)——获取Android屏幕尺寸、控件尺寸、状态栏/通知栏高度、导航栏高度 .