appium 滑动在 4.4 的系统内是很好用的,那么 4.1~4.3 系统怎么办?
论坛的大神隐藏的太深,没有一个人出来帮忙,小弟不才,研究出来一个解决方案,希望对后面的同学有些启发。
其他手势的操作同理,大家自己去写。
// 支持4.1~4.4
// 支持WEBVIEW滑动,对于原生滑动,我另外封装了一个
public void webview_swipe(AppiumDriver driver, Double sX, Double sY,
Double eX, Double eY, Double duration) throws Exception { //
JavascriptExecutor js;
HashMap<String, Double> swipeObject;
try {
// 跳过引导页
logger.info("----------开始滑动----------");
int X;
int Y;
int sX2;
int sY2;
int eX2;
int eY2;
// 支持 4.1~4.3 的模式 ,调用 ADB直接滑动
if (autoName.equals("Selendroid")) {
X = driver.manage().window().getSize().getWidth();
Y = driver.manage().window().getSize().getHeight();
sX2 = (int) (X * sX);
sY2 = (int) (Y * sY);
eX2 = (int) (X * eX);
eY2 = (int) (Y * eY);
// logger.info("滑动11111111");
Runtime.getRuntime().exec(
"adb -s " + devName + " shell input swipe " + sX2 + " "
+ sY2 + " " + eX2 + " " + eY2);
TimeUnit.SECONDS.sleep(1);
} else {
// 滑动
js = (JavascriptExecutor) driver;
swipeObject = new HashMap<String, Double>();
swipeObject.put("startX", sX);
swipeObject.put("startY", sY);
swipeObject.put("endX", eX);
swipeObject.put("endY", eY);
swipeObject.put("duration", duration);
js.executeScript("mobile: swipe", swipeObject);
TimeUnit.SECONDS.sleep(1);
}
logger.info("----------开始滑动 ok----------");
} catch (Exception ex) {
// TODO Auto-generated catch block
ex.printStackTrace();
throw ex;
} finally {
// 释放变量
}
}
===========================================================================================
// 为了支持4.1~4.4
// 重写 滑动方法
// 支持原生界面滑动
public void tap_swipe(AppiumDriver driver, int sX, int sY, int eX, int eY,
int duration) throws Exception { //
try {
logger.info("----------开始滑动----------");
// 支持 4.1~4.3 的模式 ,调用 ADB直接滑动
if (autoName.equals("Selendroid")) {
Runtime.getRuntime().exec(
"adb -s " + devName + " shell input swipe " + sX + " "
+ sY + " " + eX + " " + eY);
} else {
driver.swipe(sX, sY, eX, eY, duration * 1000);
}
TimeUnit.SECONDS.sleep(duration);
logger.info("----------开始滑动 ok----------");
} catch (Exception ex) {
// TODO Auto-generated catch block
ex.printStackTrace();
throw ex;
} finally {
// 释放变量
}
}