//package com.softwinner.pad.mark3d;
package com.softwinner.performance.benchmark.mark3d; import android.content.Context;
import android.content.Intent;
import android.os.RemoteException;
import android.support.test.InstrumentationRegistry;
import android.support.test.uiautomator.By;
import android.support.test.uiautomator.UiDevice;
import android.support.test.uiautomator.UiObject;
import android.support.test.uiautomator.UiSelector;
import android.support.test.uiautomator.UiWatcher;
import android.support.test.uiautomator.Until;
import android.util.Log; import com.softwinner.performance.filecopyspeed.TestBase; import org.junit.After;
import org.junit.Before;
import org.junit.Test; import static com.softwinner.performance.benchmark.mark3d.UiAssistant.LAUNCH_TIMEOUT;
import static junit.framework.Assert.assertTrue;
import static org.hamcrest.core.IsNull.notNullValue;
import static org.junit.Assert.assertThat; /**
* mobilexprt2015 performance test
* @author liuzhipeng
*/ public class MobileXPRTTest { private static final String packageName = "com.mobilexprt2015";
private String[] path = {
"/sdcard/performance/mobilexprt/screen/",
"/sdcard/performance/mobilexprt/log/"}; private String logTag = "mobilexprttest";
private UiDevice mDevice = UiDevice.getInstance(InstrumentationRegistry.getInstrumentation());
private UiAssistant cAssistant = new UiAssistant(mDevice,path); private String startButton = "com.mobilexprt2015:id/customize_screen_start_tests";
private String testingObject = "com.mobilexprt2015:id/tv_next_scenario";
private String testendObject = "com.mobilexprt2015:id/group_name"; @Before
public void setUp() throws Exception {
cAssistant.setup(path,logTag);
this.watcherEndTheCall();
} /**
* test mobilexprt performance
* @author liuzhipeng
* @return null
* @throws Exception
*/
@Test
public void testAI030004MobileXPRT() throws Exception
{
int TestNumber = 0;
while(TestNumber < 1){
String assisStr = "[TestNumber_"+TestNumber+"]";
openApplication(packageName);
Log.i(logTag,assisStr+"open mobilexprt ");
Thread.sleep(5000);
// UiObject startTest = mDevice.findObject(new UiSelector().
// resourceId(startButton));
// assertTrue("not found start test button",startTest.exists());
// startTest.clickAndWaitForNewWindow();
// Log.i(logTag,assisStr+"click start test button");
// assertTrue("step[1] fail",cAssistant.WaitforUnitObjectExist(0,testingObject,5,100));
// Log.i(logTag,assisStr+"testing page["+testingObject+ "]exist");
// Thread.sleep(1000*60*1);
// assertTrue("step[2] fail",cAssistant.WaitforUnitObjectExist(0,testendObject,17*60,500));
// Log.i(logTag,assisStr+"test end page["+testendObject+"]exist");
// cAssistant.takescreen("mobilexprt[TestNumber_"+TestNumber +"]End",
// "[TestNumber_"+TestNumber +"]mobilexprtScore");
// Log.i(logTag,assisStr+"test end,and takescreen");
cAssistant.QuitApplication(packageName);
Log.i(logTag,assisStr+"quit mobilexprt");
Thread.sleep(1000*10);
TestNumber++; } }
public void openApplication(String packName) throws RemoteException {
mDevice.wakeUp();
/* Start from the home screen*/
mDevice.pressHome(); final String launcherPackage = mDevice.getLauncherPackageName();
assertThat(launcherPackage,notNullValue());
mDevice.wait(Until.hasObject(By.pkg(launcherPackage).depth(0)),
LAUNCH_TIMEOUT); // launch the app
Context context = InstrumentationRegistry.getContext();
final Intent intent = context.getPackageManager()
.getLaunchIntentForPackage(packName);
// Clear out any previous instances
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK);
context.startActivity(intent); // Wait for the app to appear
mDevice.wait(Until.hasObject(By.pkg(packName).depth(0)),
LAUNCH_TIMEOUT);
}
private void watcherEndTheCall(){
// UiDevice 动作不会触发监听器
// runWatcher是在查找控件失败时会调用,当然你也可以自己调用
// findAccessibilityNodeInfo里面会调用runWatcher
// UiObject.findAccessibilityNodeInfo,查找控件会用到
mDevice.registerWatcher("endCallWatcher", new UiWatcher() {
UiObject incomingCall = mDevice.findObject(new UiSelector()
.resourceId(""));
@Override
public boolean checkForCondition() {
System.out.println("endCallWatcher running");
if(incomingCall.exists()){
try {Thread.sleep(500);} catch (InterruptedException e) {e.printStackTrace();}
System.out.println("endCall success");
return true;
}
System.out.println("endCall fail");
return false;
}
});
}
@After
public void tearDown() throws Exception {
Log.i(logTag,"is triggered :"+ mDevice.hasWatcherTriggered("endCallWatcher"));
mDevice.removeWatcher("endCallWatcher"); }
}

[uiautomator篇] UiWatcher的使用的更多相关文章

  1. [uiautomator篇]uiwatcher 的使用场景

    http://www.yangyanxing.com/article/use-watcher-in-uiautomator.html   今天在uiautomator中实践了watcher的用法,这个 ...

  2. [uiautomator篇][1] 官网译文

    http://www.jianshu.com/p/7718860ec657 2016.07.25 20:59 字数 3675 Android UIAutomator浅谈 --------------- ...

  3. [uiautomator篇] 基类

      package com.softwinner.performance.benchmark; /** * UiAssistant public class * @author liuzhipeng ...

  4. [uiautomator篇][exist 存在,但click错误]

    uiautomator定位页面元素是,定位存在的;但是click的时候,发现点的位置不对,(不知道是android系统的问题还是uiautomator的问题,初步怀疑是系统的问题)

  5. [uiautomator篇] 使用uiautomator需要导入uiautomator库

    1 修改依赖文件:build/gradle( 是在app目录下)而不是和app同级目录的build/gradle androidTestCompile 'com.android.support.tes ...

  6. [Uiautomator篇][2] UiDeviceAPI介绍

    1 https://developer.android.com/training/testing/ui-testing/uiautomator-testing.html  http://www.cnb ...

  7. [UiAutomator篇][3] 打开音乐应用的测试脚本

    package qq.test; import android.content.Context; import android.content.Intent; import android.suppo ...

  8. [uiautomator篇]recent

    def Recent(self): d = Device('9410519008004c22098b') displayWidth = int(d.info.get("displayWidt ...

  9. [uiautomator篇] python uiautomatorDemo

    #coding=utf-8 """ @version: 1.0 @author: @prerequisite: based on Python 2.7 @usage: 1 ...

随机推荐

  1. Visual Studio使用技巧学习

      F7:  代码窗口 Shift+F7:   对象窗口 F4:  属性窗口 闪电图标:    对象的事件 F5:   编译及运行 Ctrl+F5:  编译及运行(不调试) svm+两次Tab:  s ...

  2. 解析 MFC 中的 FromHandle

    MFC 对 Windows API 进行了封装,在很多方面都会提供便利.用 FromHandle 返回零时对象的指针,就可以调用各种类的方法.临时对象会在 OnIdle 中销毁.这里对 FromHan ...

  3. uvm_test——测试用例的起点

    在UVM平台验证中,所有的test cases都extends uvm_test,首先,来看源代码 //------------------------------------------------ ...

  4. strophe.js 插件 XMPP openfire

    参考资料:http://strophe.im/strophejs/ https://github.com/strophe/strophejs-plugins http://amazeui.org/ 最 ...

  5. mongodb复制集里查看主从操作日志oplog

    MongoDB的replica set架构是通过一个日志来存储写操作的,这个日志就叫做 oplog .oplog.rs 是一个固定长度的 Capped Collection,它存在于local数据库中 ...

  6. openstack安装dashboard后访问horizon出错 End of script output before headers: django.wsgi

    在配置文件中增加如下的一句解决问题 /etc/apache2/conf-available/openstack-dashboard.conf WSGIApplicationGroup %{GLOBAL ...

  7. sqlalchemy.exc.OperationalError: (sqlite3.OperationalError) Cannot add a NOT NULL column with default value NULL [SQL: u'ALTER TABLE address_scopes ADD COLUMN ip_version INTEGER NOT NULL']

    root@hett-virtual-machine:~# su -s /bin/sh -c "neutron-db-manage --config-file /etc/neutron/neu ...

  8. 关于HTML5中Video标签无法播放mp4的解决办法

    1.首先先排除掉代码问题.路径问题.浏览器不支持问题等常规问题,这些问题另行百度. <video width="500px" height="300px" ...

  9. mysql dump 参数大全

    Mysqldump参数大全   摘自:https://www.cnblogs.com/qq78292959/p/3637135.html 参数 参数说明 --all-databases  , -A 导 ...

  10. jExcelAPI导入导出excel

      MS的电子表格(Excel)是Office的重要成员,是保存统计数据的一种常用格式.作为办公文档,势必要涉及到的电子文档的交换,Excel是一种在企业中非常通用的文件格式,打印和管理也比较方便.在 ...