Appium Android app 无法定位到正确界面

江纯 · 2015年10月26日 · 最后由 nostop 回复于 2015年11月02日 · 2618 次阅读

一、环境 :windows 下 Appuim +eclipse+java+TestNG

二、现象:被测试 App :有一个一闪而过的启动页,运行安装 app 后会自动跳过启动页,停留在欢迎界面,我想定位操作欢迎界面上的元素
但是都无效,我获取当前界面元素发现,获取的都是启动页的元素

三、提问:怎样能跳过启动页定位到欢迎界面上的元素

四、代码如下

public class AppDemo {
    private AppiumDriver driver;

    @BeforeMethod(alwaysRun=true)
    public void setUp() throws Exception {
        // set up appium
         File classpathRoot = new File(System.getProperty("user.dir"));
         File appDir = new File(classpathRoot, "apps/XX");
         File app = new File(appDir, "XX.apk");
         DesiredCapabilities capabilities = new DesiredCapabilities();
         capabilities.setCapability("platformName", "Android");
         capabilities.setCapability("deviceName","SM_N7508V");
         capabilities.setCapability("platformVersion", "4.3");
         capabilities.setCapability("app", app.getAbsolutePath());        
         capabilities.setCapability("appPackage", "com.qding.community");
         capabilities.setCapability("appActivity", "com.qding.community.home.activity.SplashActivity");
         driver = new AppiumDriver(new URL("http://127.0.0.1:4723/wd/hub"), capabilities);
    }

    @AfterMethod(alwaysRun=true)
    public void tearDown() throws Exception {
        System.out.println("end");

        driver.quit();

    }

    @Test(groups={"testCase"})
    public void testCase(){
        driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
        driver.getPageSource();

       // System.out.println(driver.findElementById("com.qding.community:id/iv_start"));
        System.out.println(driver.getPageSource());
        // driver.tap(1, driver.findElementById("com.qding.community:id/iv_start"), 0);

    }

共收到 15 条回复 时间 点赞

com.qding.community.home.activity.SplashActivity 这个 Activity 是欢迎页的还是启动页的?

driver = new AppiumDriver(new URL("http://127.0.0.1:4723/wd/hub"), capabilities);
什么版本的 appium jar 呀, android 的话应该是 new AndroidDriver(XXXX);

请增加头像,同时使用 markdown

#3 楼 @monkey 已按格式修改

#1 楼 @zsx10110 是启动页

#2 楼 @qi_ling2005 是 1.2.1 版本

#5 楼 @purely 试试把 Activity 改成欢迎页试试看,虽然我没有遇到过这种问题。

#7 楼 @zsx10110 换成欢迎界面 app 打开一下就直接关闭了~

  1. 先检查是不是启动的 activity 不对
  2. 尝试找到欢迎界面的 activity,添加 appWaitActivity ,例如: C# cap.SetCapability("appPackage", "com.nbbank"); cap.SetCapability("appActivity", "com.nbbank.ui.ActivityShow"); cap.SetCapability("appWaitActivity", "com.nbbank.ui.ActivityLogo"); //你想要等待启动的 Android Activity 名称;

webview ?

#8 楼 @purely 要不你把 AndroidMainfest.xml 的关键内容附上来看下?这样看起来清晰一些。

我也遇到过这个问题,你可以看下 appium 的运行日志,看下是不是权限的问题。可以用 adb 启动 activity 试一下,如果 adb 启动提示无权限就是权限的问题了。需要将手机 root,如果没源码的话可以装一个获取 adb shell 超级权限的 apk,可以试下这个 ADB_adbd_Insecure_1.20.apkADB_adbd_Insecure_1.20.apk。

江纯 #13 · 2015年11月02日 Author

#12 楼 @darkhorse

#11 楼 @chenhengjie123
#9 楼 @happystone
设置了等待界面已经 OK 了

江纯 #14 · 2015年11月02日 Author

#10 楼 @13651969749 Android 原生界面

@purely 拿到 activity,设置时间循环匹配比较合适,我之前也遇到过 apk 对于有的机型启动时间过长

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册