问题
I was using below code for page swiping in Android Mobile Automation Testing, the swipe function is not supported. It gives the error:
The method swipe(int, int, int, int, int) is undefined for the type AppiumDriver
Below is the code
public static void Swipe(String Direction) throws Exception,IOException{
if(Direction.equalsIgnoreCase("Right to Left")){
AgenceGS_Framwork.driver.context("NATIVE_APP");
Dimension size = AgenceGS_Framwork.driver.manage().window().getSize();
int startx = (int) (size.height * 0.8);
int endx = (int) (size.height * 0.20);
int starty = size.width / 2;
//Mobile_Framwork.driver.swipe(startx, starty, endx, starty, 1000);
AgenceGS_Framwork.driver.swipe(endx, starty, startx, starty, 2000);
AgenceGS_Framwork.switchWebview("android.webkit.WebView");
}
if(Direction.equalsIgnoreCase("Left to Right")){
AgenceGS_Framwork.driver.context("NATIVE_APP");
Dimension size = AgenceGS_Framwork.driver.manage().window().getSize();
int endx = (int) (size.width * 0.8);
System.out.println("start width");
int startx = (int) (size.width * 0.20);
System.out.println("start width");
int starty = size.height / 2;
AgenceGS_Framwork.driver.swipe(startx, starty, endx, starty, 1000);
AgenceGS_Framwork.switchWebview("android.webkit.WebView");
}
if(Direction.equalsIgnoreCase("Coordinate Scroll")){
AgenceGS_Framwork.driver.context("NATIVE_APP");
TouchAction touch=new TouchAction(AgenceGS_Framwork.driver);
touch.longPress(664,600).moveTo(664, 100).release().perform();
AgenceGS_Framwork.switchWebview("android.webkit.WebView");
}
}
回答1:
Check it out, it will help you for page swiping (for Java client 5.0.3), it's working perfectly for me.
public static void swipeHorizontal(AppiumDriver driver, double startPercentage, double finalPercentage, double anchorPercentage, int duration) throws Exception {
Dimension size = driver.manage().window().getSize();
int anchor = (int) (size.height * anchorPercentage);
int startPoint = (int) (size.width * startPercentage);
int endPoint = (int) (size.width * finalPercentage);
new TouchAction(driver).press(startPoint, anchor).waitAction(Duration.ofMillis(duration)).moveTo(endPoint, anchor).release().perform();
}
public static void swipeVertical(AppiumDriver driver, double startPercentage, double finalPercentage, double anchorPercentage, int duration) throws Exception {
Dimension size = driver.manage().window().getSize();
int anchor = (int) (size.width * anchorPercentage);
int startPoint = (int) (size.height * startPercentage);
int endPoint = (int) (size.height * finalPercentage);
new TouchAction(driver).press(anchor, startPoint).waitAction(Duration.ofMillis(duration)).moveTo(anchor, endPoint).release().perform();
}
Call them by:
For scroll up: swipeVertical((AppiumDriver)driver,0.9,0.1,0.5,3000);
For scroll down: swipeVertical((AppiumDriver)driver,0.1,0.9,0.5,3000);
For right to left: swipeHorizontal((AppiumDriver) driver,0.9,0.01,0.5,3000);
For left to right: swipeHorizontal((AppiumDriver) driver,0.01,0.9,0.5,3000);
来源:https://stackoverflow.com/questions/49233444/swipe-funtion-in-andriod-for-java-client-5-0-3-is-not-working