您的位置:首页 > 移动开发

手机自动化测试(7)--appium代码使用

2015-11-16 17:17 459 查看
1安装类

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再将指令解析出来,调用对应的手机接口,完成各种操作。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: