appium--獲取坐標、長按、滑動操作(Java)


一、TouchAction

使用Appium需要引入java-client-xx.jar包,在java-client-5.0版本之前,Appium滑動使用的是swipe方法,從5.0之后,Appium已經取消swipe方法,交由TouchAction對象的方法來完成滑動操作。在java-client-5.0版本之前也有TouchAction對象,在java-client-5.0版本之后TouchAction對象的方法使用也有所變化。

1.press短按

短按操作是通過入參元素坐標的x,y值完成的

(1)在5.0版本之前直接入參坐標x,y值

press(int x,int y)

(2)在5.0版本開始入參是調用PointOption對象的point方法

press(PointOption.point(int x,int y))

2.longPress長按

長按操作同樣是通過入參元素坐標的x,y值完成的,長按操作比較常見的如元素拖動、元素滑動等

(1)在5.0版本之前直接入參坐標x,y值

longPress(int x,int y)

(2)在5.0版本開始入參是調用PointOption對象的point方法

longPress(PointOption.point(int x,int y))

3.waitAction暫停

暫停等待

(1)在5.0版本之前使用TouchAction的wait方法,入參是int類型,單位毫秒

wait(2000)

(2)在5.0版本開始,已經丟棄了wait方法,使用TouchAction的waitAction方法,入參WaitOptions對象,調用waitOptions方法的入參值是Duration.ofSeconds(1)單位是秒

waitAction(WaitOptions.waitOptions(Duration.ofSeconds(1)))

4.moveTo移動

移動到某坐標位置,與press、longPress配合一起使用

(1)在5.0版本之前moveTo入參為坐標x,y值

moveTo(int x,int y)

(2)在5.0版本開始入參是調用PointOption對象的point方法

moveTo(PointOption.point(int x,int y))

5.release釋放

完成press短按、longPress長按、waitAction等待、moveTo移動完成操作后需要使用release方法釋放

6.perform執行

調用perform方法表示要執行press短按、longPress長按、waitAction等待、moveTo移動、release釋放這些操作

舉例:

PointOption startPoint = PointOption.point(1200,1200);
PointOption endPointPoint = PointOption.point(1200,600);
WaitOptions waitOption = WaitOptions.waitOptions(Duration.ofSeconds(1));
new TouchAction<>(driver).longPress(startPoint).waitAction(waitOption).moveTo(endPointPoint).release().perform();

這是一個往上滑動的操作,保持x坐標的不變,y坐標減少,表示從下往上滑動。操作過程是長按--等待1S--滑動--釋放--執行

二、獲取坐標方法

元素坐標位置的絕對值因設備大小、分辨率不同,值會不一樣(不建議直接使用坐標操作元素),所以要使用相對位置來操作,Appium提供以下方法獲取元素相對坐標

1.獲取屏幕大小

int screenWidth = driver.manage().window().getSize().width;
int screenHeight = driver.manage().window().getSize().height;

2.獲取元素開始坐標

WebElement element = driver.findElement(By.id("ymxh.main:id/spinner_button"));
Point p = element.getLocation();
//獲取元素開始的x,y坐標
int startX = p.x;
int startY = p.y;

3.獲取元素寬、高

WebElement element = driver.findElement(By.id("ymxh.main:id/spinner_button"));
//得到元素的寬、高
Dimension d = element.getSize();
int width = d.width;
int height = d.height;

4.得到元素坐標的結束坐標

//得到坐標結束坐標
int endX = startX+width;
int endY = startY+height;

5.得到元素中間坐標

//得到元素中心坐標
int centerX = (startX + endX)/2;
int centerY = (startY + endY)/2;

轉載:https://blog.csdn.net/ouyanggengcheng/article/details/89184266


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM