川石教育
全国咨询热线:136-9172-9932
  1. 首页 > 资讯与干货 > IT资讯

UiSelector类介绍(六):Configurator类介绍

作者:川石学院 日期:2022-04-13 09:46:44 点击数:

一天一个关于测试知识点,5分钟内讲解你最关心的软件测试问题,今天就接着来谈谈关于软件测试中的“Configurator类介绍”。

UiAutomator API详解:UiSelector类介绍(一)(图1)

  Configurator类用于设置脚本动作的默认延时,其作用如下。

  l 可调节两个模拟动作之间的默认间隔。

  l 可调节输入文本的输入时间间隔。

  l 可调节每次滚动的时间间隔。

  l 可调节等待系统空闲的默认时间。

  Configurator的定义方法如下。

  Configurator.getInstance()

  Configurator类的API如表4-42所示。

UiSelector类介绍(五):Configurator类介绍(图2)

  案例4-39:Configurator类设置延时操作。

  @Test

  public void testConfigurator() throws UiObjectNotFoundException,InterruptedException {

  Util util=new Util();

  util.enterAPP();

  UiObject appsTab = new UiObject(new UiSelector().text("Apps"));

  appsTab.click();

  //1.ActionAckonwledgmentTimeout()

  long action= Configurator.getInstance().getActionAcknowledgmentTimeout();

  //输出默认延时

  Log.i("AAA","动作默认延时为: "+action); //默认是3000

  //获取屏幕高度和宽度

  int y=UiDevice.getInstance(getInstrumentation()).getDisplayHeight();

  int x=UiDevice.getInstance(getInstrumentation()).getDisplayWidth();

  //默认延时下动作间隔时间感受

  UiDevice.getInstance(getInstrumentation()).swipe(x-10,y/2,x-200,y/2,10);

  UiDevice.getInstance(getInstrumentation()).swipe(x-10,y/2,x-200,y/2,10);

  Thread.sleep(2000);

  //修改延时

  Configurator.getInstance().setActionAcknowledgmentTimeout(100000);

  //使用设置延时下动作间隔时间感受

  UiDevice.getInstance(getInstrumentation()).swipe(x-10,y/2,x-200,y/2,10);

  UiDevice.getInstance(getInstrumentation()).swipe(x-10,y/2,x-200,y/2,10);

  //使用完毕后调回默认延时,切记!!!

  Configurator.getInstance().setActionAcknowledgmentTimeout(action);

  //2.KeyInjectionDelay()

  long print=Configurator.getInstance().getKeyInjectionDelay();

  //输出键盘输入默认延时

  Log.i("AAA","键盘输入默认延时为: "+print); //默认是0

  new UiObject(new UiSelector().className("android.widget.TextView").index(0)).click();

  UiScrollable appViews = new UiScrollable(new UiSelector().scrollable(true));

  UiObject settingsApp = appViews.getChildByText(

  new UiSelector().className(android.widget.TextView.class.getName()),"Demo4");

  settingsApp.clickAndWaitForNewWindow();

  //获取输入框

  UiObject set=new UiObject(new UiSelector().resourceId("com.example.demo4:id/username"));

  //感受默认延时下输入间隔

  set.setText("aabbccd");

  Thread.sleep(2000);

  set.clearTextField();

  //修改默认延时为3秒

  Configurator.getInstance().setKeyInjectionDelay(3000);

  //感受修改延时后输入间隔

  set.setText("aabbccd");

  Thread.sleep(2000);

  set.clearTextField();

  //切记改回原始时间

  Configurator.getInstance().setKeyInjectionDelay(print);

  //3.ScrollAcknowledgmentTimeout()

  long scroll=Configurator.getInstance().getScrollAcknowledgmentTimeout();

  //输出默认延时

  Log.i("AAA","滚动默认延时: "+scroll); //默认是200

  //获取列表集合

  UiScrollable scroll1=new UiScrollable(new UiSelector().className("android.widget.EditText"));

  //感受默认滚动延时间隔

  scroll1.flingToEnd(5);

  //设置默认滚动时间间隔为2S

  Configurator.getInstance().setScrollAcknowledgmentTimeout(2000);

  //感受设置后的滚动时间间隔

  scroll1.flingToEnd(5);

  //切记使用完毕改回为默认时间间隔

  Configurator.getInstance().setScrollAcknowledgmentTimeout(scroll);

  //4.WaitForIdleTimeout()

  long wait=Configurator.getInstance().getWaitForIdleTimeout();

  Log.i("AAA","空闲默认延时为: "+wait); //默认是1000

  //5.WaitForSelectorTimeout()

  long selector=Configurator.getInstance().getWaitForSelectorTimeout();

  //输出默认时间间隔

  Log.i("AAA","查找组件默认延时为 :"+selector); //默认是1000

  //随意查找一个对象

  UiScrollable scroll2=new UiScrollable(new UiSelector().resourceId("com.example.demo4:id/username"));

  scroll2.click();

  //修改默认时间间隔

  Configurator.getInstance().setWaitForSelectorTimeout(1000);

  //感受修改后的时间间隔

  UiScrollable scroll3=new UiScrollable(new UiSelector().resourceId("com.example.demo4:id/password"));

  scroll3.click();

  }

  通过Configurator类的这些方法可以实现“模拟双击与快速多单击动作”与“使用keyCode快速输入”代码分别如下。

  案例4-40:模拟双击与快速多单击动作。

  public void quicklyClick(int num,int x,int y){

  //获取动作间隔时间

  long actionTime=Configurator.getInstance().getActionAcknowledgmentTimeout();

  //设置动作间隔时间

  Configurator.getInstance().setActionAcknowledgmentTimeout(0);

  //设置操作步骤

  for(int i=0;i<=num;i++){

  UiDevice.getInstance(getInstrumentation()).click(x,y);

  }

  //最后别忘了恢复默认时间间隔,避免影响后面其他的用例

  Configurator.getInstance().setActionAcknowledgmentTimeout(actionTime);

  }

  把这段代码放入util.java 中,可以通过如下方法调用。

  @Test

  public void testQuicklyClick() throws UiObjectNotFoundException {

  Util util=new Util();

  util.enterAPP();

  //获取屏幕高和宽

  int y=UiDevice.getInstance(getInstrumentation()).getDisplayHeight();

  int x=UiDevice.getInstance(getInstrumentation()).getDisplayWidth();

  util.quicklyClick(4,x/2,y/2);

  }

  案例4-41:使用keyCode快速输入。

  public void quicklyKeyCode(String input){

  //获取动作间隔时间

  long action=Configurator.getInstance().getActionAcknowledgmentTimeout();

  //设置动作间隔时间

  Configurator.getInstance().setActionAcknowledgmentTimeout(1);

  //方法中用到的数字来自androidKeyCode表

  for (int i=0;i<input.length();i++){< p="">

  char c=input.charAt(i);

  //判断输出

  if (c>48&&c<=57){

  UiDevice.getInstance(getInstrumentation()).pressKeyCode(c-41);

  }else if(c>=97&&c<=122){

  UiDevice.getInstance(getInstrumentation()).pressKeyCode(c-68);

  }else if (c>=65&&c<=90){

  UiDevice.getInstance(getInstrumentation()).pressKeyCode(c-36,1);}}

  //千万别忘记恢复默认

  Configurator.getInstance().setActionAcknowledgmentTimeout(action);}

  也把这段代码放入util.java 中,可以通过如下方法调用。

  @Test

  public void testQuicklyKeyCode() throws UiObjectNotFoundException {

  Util util=new Util();

  util.comming("Demo4");

  util.quicklyKeyCode("jerry");}

  断言

  由于UiAutomator使用的是JUnit4框架,所以所有Junit4的断言在这里都可以使用。

  使用JUnit4的框架进行调整

  正如前面所说,由于UiAutomator使用的是JUnit4框架,所以可以利用@Before与@After对代码进行优化。

  案例4-42:利用@Before的优化代码。

  @Before

  public void setup(){

  instrumentation = InstrumentationRegistry.getInstrumentation();

  UiDevice.getInstance(instrumentation).pressHome();

  }

  在所有测试用例开始,先初始化Instrumentation实例,然后点击【HOME】键准备进行测试。

  案例4-43:利用@After的优化代码。

  @After

  public void Tear() throws RemoteException,UiObjectNotFoundException {

  UiDevice.getInstance(instrumentation).pressHome();

  Util util=new Util();

  util.deleteAPP(instrumentation);

  }

  在所有测试用例结束,先点击【HOME】键把页面返回初始状态,然后调用util类中的deleteAPP方法把打开的APP全部关闭。


相关文章
  • 亚马逊运营成功转行软件测试,薪资13K表示很满意!2022-04-13 09:46:44
  • 西安川石的兰朋友喊你来当他的学弟学妹啦!2022-04-13 09:46:44
  • 国外的月亮也不一定比国内测试猿的年薪美~2022-04-13 09:46:44
  • 建筑工程专业朱同学成功转行为软件测试人!2022-04-13 09:46:44
  • 财务管理专业转行软件测试月薪甩会计几条街!2022-04-13 09:46:44
  • 只有技术沉淀才能成功上岸,深圳就业薪资13K!2022-04-13 09:46:44
  • 薪资11K!实现自我价值,从掌握一门IT技术开始...2022-04-13 09:46:44
  • 文科生转行软件测试照样拿下高薪15K!2022-04-13 09:46:44
  • 恭喜罗同学喜提19.5K,成功入行软件测试!2022-04-13 09:46:44
  • 毕业1年,迷茫的他最终选择转行软件测试2022-04-13 09:46:44