如何在appium 1.6.4和java client 5.0.0 beta7中执行滚动

如何在appium 1.6.4和java client 5.0.0 beta7中执行滚动,java,android,selenium,testing,appium,Java,Android,Selenium,Testing,Appium,Plz为我提供了一些可能的替代方案,可以在android屏幕上下滚动,而无需使用swipe方法和touch action类。 我无法在android应用程序版本21中执行滚动功能。 下面是我的代码 package com.raaga.demo; import java.io.File; import java.net.MalformedURLException; import java.net.URL; import java.util.List; import java.util.concu

Plz为我提供了一些可能的替代方案,可以在android屏幕上下滚动,而无需使用swipe方法和touch action类。 我无法在android应用程序版本21中执行滚动功能。 下面是我的代码

package com.raaga.demo;

import java.io.File;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.List;
import java.util.concurrent.TimeUnit;
import org.openqa.selenium.By;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.remote.DesiredCapabilities;
import org.testng.annotations.Test;

import io.appium.java_client.TouchAction;
import io.appium.java_client.android.AndroidDriver;

public class MainTest {
    private AndroidDriver<WebElement> driver;

    @Test
    public void setUp() {
        File apkFile = new File("./Raaga.apk");
        DesiredCapabilities cap = new DesiredCapabilities();
        cap.setCapability("platform", "Android");
        cap.setCapability("deviceName", "Andriod Device");
        cap.setCapability("app", apkFile.getAbsolutePath());
        cap.setCapability("commandTimeOut", "2*60");
        cap.setCapability("appPackage", "com.raaga.android");
        cap.setCapability("appActivity", "com.raaga.android.SplashScreen");

        try {
            driver = new AndroidDriver<WebElement>(new URL("http://0.0.0.0:4723/wd/hub"), cap);
        } catch (MalformedURLException e) {

            e.printStackTrace();
        }
        try {
            driver.manage().timeouts().implicitlyWait(90, TimeUnit.SECONDS);
            driver.findElement(By.id("com.raaga.android:id/skip_text")).click();
            driver.findElementById("com.raaga.android:id/landing_skip_to_raaga").click();
            List<WebElement> ele = driver.findElements(By.className("android.widget.TextView"));
            System.out.println(ele.size());
            System.out.println(ele.get(1).getText());
            ele.get(1).click();
            driver.findElementById("com.raaga.android:id/toolbar_logo").click();
            System.out.println(driver.findElementById("com.raaga.android:id/menu_music_btn").getSize());
            driver.findElementById("com.raaga.android:id/menu_music_btn").click();
            System.out.println(driver.findElementById("com.raaga.android:id/slidingmenumain").getSize());
            System.out.println(driver.getCapabilities());
            Thread.sleep(30000);
         //   driver.findElement(MobileBy.AndroidUIAutomator("new UiSelector().text()"));
            TouchAction ac=new TouchAction(driver);
            ac.moveTo(driver.findElement(By.id("com.raaga.android:id/artists_radio_lay1"))).release().perform();



//          Boolean result = driver.findElement(By.xpath("//android.widget.TextView[@index='0']")).isDisplayed();
//          while (result) {
//              driver.swipe(0, 853, 0, 122, 2000);
//              if (result==true) {
//                  
//                  break;
//              }
//
//          }


        } catch (Exception ex) {
            ex.printStackTrace();
        }

    }

}
package com.raaga.demo;
导入java.io.File;
导入java.net.MalformedURLException;
导入java.net.URL;
导入java.util.List;
导入java.util.concurrent.TimeUnit;
导入org.openqa.selenium.By;
导入org.openqa.selenium.WebElement;
导入org.openqa.selenium.remote.DesiredCapabilities;
导入org.testng.annotations.Test;
导入io.appium.java_client.TouchAction;
导入io.appium.java_client.android.AndroidDriver;
公共类测试{
私用AndroidDriver;
@试验
公共作废设置(){
文件apkFile=新文件(“./Raaga.apk”);
DesiredCapabilities=新DesiredCapabilities();
cap.setCapability(“平台”、“安卓”);
cap.setCapability(“deviceName”、“Andriod设备”);
cap.setCapability(“app”,apkFile.getAbsolutePath());
上限设定能力(“命令超时”,“2*60”);
cap.setCapability(“appPackage”、“com.raaga.android”);
cap.setCapability(“appActivity”、“com.raaga.android.SplashScreen”);
试一试{
驱动程序=新的AndroidDriver(新的URL(“http://0.0.0.0:4723/wd/hub"(香港法例第六章),;
}捕获(格式错误){
e、 printStackTrace();
}
试一试{
driver.manage().timeouts().implicitlyWait(90,TimeUnit.SECONDS);
driver.findElement(By.id(“com.raaga.android:id/skip_text”)。单击();
driver.findElementById(“com.raaga.android:id/landing_skip_to_raaga”)。单击();
List ele=driver.findElements(By.className(“android.widget.TextView”);
System.out.println(ele.size());
System.out.println(ele.get(1.getText());
ele.get(1).单击();
driver.findElementById(“com.raaga.android:id/toolbar_logo”)。单击();
System.out.println(driver.findElementById(“com.raaga.android:id/menu_music_btn”).getSize();
driver.findElementById(“com.raaga.android:id/menu_music_btn”)。单击();
System.out.println(driver.findElementById(“com.raaga.android:id/slidingmenumain”).getSize();
System.out.println(driver.getCapabilities());
睡眠(30000);
//driver.findElement(MobileBy.AndroidUIAutomator(“new-UiSelector().text()”);
TouchAction ac=新的TouchAction(驾驶员);
ac.moveTo(driver.findelelement(By.id(“com.raaga.android:id/artists\u radio\u lay1”)).release().perform();
//布尔结果=driver.findElement(By.xpath(“//android.widget.TextView[@index='0']”);
//while(结果){
//驾驶人。刷卡(0853,01222000);
//如果(结果==真){
//                  
//中断;
//              }
//
//          }
}捕获(例外情况除外){
例如printStackTrace();
}
}
}
下面是我在项目pom.xml文件中使用的依赖项


4.0.0
com.demo
RagaAppTesting
0.0.1-快照
org.seleniumhq.selenium
硒服务器
3.3.1
org.json
json
20160810
番石榴
番石榴
20
木卫一
java客户端
5.0.0-BETA7
org.testng
testng
6.9.10
测试

使用下面的代码向下滚动到某个元素

public void scrollDownToAnElement(String object) throws InterruptedException{
        try{
            driver.manage().timeouts().implicitlyWait(1, TimeUnit.SECONDS);
            boolean loop=true;
            int count=0;
            while(loop){
                if(count==5)
                    break;
                if(getDriver().findElements(By.id(object)).size()>0){
                    loop=false;
                }
                else{
                    Dimension size = getDriver().manage().window().getSize();
                    System.out.println(size);
                    //Find swipe start and end point from screen's with and height.
                    //Find starty point which is at bottom side of screen.
                    int starty = (int) (size.height * 0.80);
                    //Find endy point which is at top side of screen.
                    int endy = (int) (size.height * 0.30);
                    //Find horizontal point where you wants to swipe. It is in middle of screen width.
                    int startx = size.width / 2;
                    System.out.println("starty = " + starty + " ,endy = " + endy + " , startx = " + startx);
                    //Swipe from Bottom to Top.
                    driver.swipe(startx, starty, startx, endy, 3000);
                    Thread.sleep(1000);
                    count++;
                }
                //Swipe from Top to Bottom.
                //        ((AndroidDriver) driver).swipe(startx, endy, startx, starty, 3000);
            }
        }catch(Exception e){
            throw e;
        }
        finally{
            driver.manage().timeouts().implicitlyWait(15, TimeUnit.SECONDS);
        }
    }

感谢您提供此类备选方案,如果它回答了您的问题,则将其作为“答案”接受