经常有人说appium的滑动实现是门艺术,实现不好就会出现事与愿违的操作,比如本来想要向上滑动,却出现了下拉的动作,这样使得我们在调试中就要花费大量时间去调试滑动操作。
以下是我在滑动操作中总结的一点经验,希望可以对遇到这方面问题的读者有一点帮助;
总结:
1、滑动时中间要加等待时间,不加等待时间容易出错,而且加等待时间的长短也要掌握好,一般在200-1000毫秒之间应该差不多,自己调试几次感觉一下哪个时间比较稳,每个程序可能会有所差异,还要注意的是ios和Android的等待时间也会有差异,ios等待1000毫秒可能出现长安的效果;
TouchAction tAction = new TouchAction(driver);
tAction.press(x,y).waitAction(200).moveTo(x,y).release().perform();
2、滑动的坐标点,滑动的坐标点要掌握好,如果坐标点掌握不好也会导致错误出现,比如Android和ios就有很大区别,以下示例分别是ios和Android实现上滑动作;
Android实现上滑:
int width=driver.manage().window().getSize().width;
int height=driver.manage().window().getSize().height;
int y1 = height*3/4; //上滑的开始点,从y1开始也就是屏幕的四分之三处
int y2 = height*1/4; //上滑的结束点,到y2结束也就是屏幕的四分之一处
TouchAction tAction = new TouchAction(driver);
tAction.press(width/2,y1).waitAction(200).moveTo(width/2,y2).release().perform();
ios实现上滑:
tAction.press(width/2,y1).waitAction(200).moveTo(width/2,y2-y1).release().perform();
解释:
比如总高度是1600,那么y1就是1200,y2是400,高度从1200移动到400的位置,这个大家应该都能理解,而ios的结束点的高度坐标是y2-y1,这样得出的是一个负数,这样感觉不太容易理解,这个可能是他们的算法有差异;我理解ios滑动算法是,y2-y1=-800,然后y1是1200,y1移动到y2,就是y1+y2=400,就是说移动到400的位置,这样理解感觉也能说的通,当然只是我自己的理解,如有更好见解欢迎讨论。
网友评论