最近发现QQ有一个点赞排行榜的东西,想到自己好几个小号,故可以拿来利用一下。试了一下效果不错,顺便学习了一下am启动和关闭应用。public void qqPraise() throws IOException, UiObjectNotFoundException, InterruptedException { //关闭QQ Runtime.getRuntime().exec("am force-stop com.tencent.mobileqq"); sleep(1000); //启动QQ Runtime.getRuntime().exec("am start -n com.tencent.mobileqq/.activity.SplashActivity"); waitForUiObject("消息");//等待主页面加载 swipeRight();//进入右滑页面 //点赞 praiseToMe(); for(int i=0;i<8;i++){ changeQQAccount(); praiseToMe(); } //关闭QQ,如果运行中想结束得加上waitfor(); Runtime.getRuntime().exec("am force-stop com.tencent.mobileqq").waitFor(); } 下面是具体步骤的实现 //点赞 public void praiseToMe() throws UiObjectNotFoundException { getUiObjextByResourceId("com.tencent.mobileqq:id/head").clickAndWaitForNewWindow(); getUiObjectByDescContains("次赞,按钮").clickAndWaitForNewWindow(); getUiObjectByText("我赞过谁").clickAndWaitForNewWindow(); //按十次点赞按钮 Rect bounds = getUiObjectByTextContains("饿的时候想着来什么").getFromParent(new UiSelector().description("赞")).getBounds(); int x = bounds.centerX()+bounds.width()/4; int y = bounds.centerY()+bounds.height()/4; for(int i=0;i<10;i++){ clickPiont(x, y); } /*这个方法执行起来比较慢 for(int i=0;i<10;i++){ clickRightBottom(getUiObjectByTextContains("饿的时候想着来什么").getFromParent(new UiSelector().description("赞"))); }*/ pressTimes(KeyEvent.KEYCODE_BACK, 2);//回到右滑界面 } //切换QQ账号 public void changeQQAccount() throws UiObjectNotFoundException { getUiObjectByText("设置").clickAndWaitForNewWindow(); sleep(1000); waitForResourceIdAndClick("com.tencent.mobileqq:id/account_switch"); //切换账号,每次点击最后一个账号 getUiObjectByResourIdIndex("com.tencent.mobileqq:id/name", 7).clickAndWaitForNewWindow(); pressTimes(KeyEvent.KEYCODE_BACK, 2);//回到右滑界面 }
这里切换QQ的时候点击账号管理很不好用,加了1s的延迟也不行,后来改成resoucerid就好了,不知道为什么。