robotium 中通过id获取 View 以及进行相应的操作

robotium 中id的几种表现形式

1)字符串形式:例如id/btn_example,源码中的布局里些的hierachy 中看见的都是这种。

2)数字形式:例如0x7f0700D,打开R.java里面体现了String形式和int形式对应关系。

白盒测试中,直接使用R.id的形式来调用

View view =solo.getView(R.id.btn_example);//获取view

solo.clickOnView(view);//点击

黑盒测试中,R.id 不可见

Activity act =solo.getCurrentActivity();//获取Activity

int id =act.getResources().getIdentifier("btn_example","id",act.getPackageName());//通过String 的id 获取int 的id

View View =act.findViewById(id);//获取view

solo.clickOnView(view);//点击

对于方法可以封装,方法如下:

private boolean clickById(String id) throws Exception{

if(id==""){

return false;

}

try{

Activity act =solo.getCurrentActivity();//获取当前的activity

int id = act.getResource().getIdentifier(id,"id",solo.getCurrentActivity().getPackageName());//获取id

View view = solo.getView(id);//得到view

solo.clickOnView(view);//点击View

}catch(Exception ex ){

log.e();

}

return true;

}

时间: 2024-10-01 02:36:33

robotium 中通过id获取 View 以及进行相应的操作的相关文章

在Robotium中使用ID

============问题描述============ 在robotium中api中不提供使用id的方式. 如果我们想在robotium中使用id就需要自己通过id来找到控件的实例,然后通过robotium的api对实例进行操作来达到目的. 当然了.如果有童鞋有兴趣也可以自己将这个封装起来以便使用. 在说方法之前,我不得不先说说id的几种形式: 1.字符串形式.例如id/btn_Example我们在源码的布局里面写的,HierarchyView中看见的,都是这种. 2.数字形式.例如0x7f0

Egret-我的探索:自定义组件中通过ID获取子组件实例

可以看到,在exml编辑器中我们给UI组件添加了ID属性; 之后在对应的 ts文件中使用这个组件 namespace ui { export class GameCtrl extends eui.Component { constructor() { super(); this.skinName = "resource/eui_skins/GameMainCtrl.exml"; this.addEventListener(eui.UIEvent.COMPLETE, this.ctrlI

Activity中获取view的高度和宽度为0的原因以及解决方案

在activity中可以调用View.getWidth.View.getHeight().View.getMeasuredWidth() .View.getgetMeasuredHeight()来获得某个view的宽度或高度,但是在onCreate().onStrart().onResume()方法中会返回0,这是应为当前activity所代表的界面还没显示出来没有添加到WindowPhone的DecorView上或要获取的view没有被添加到DecorView上或者该View的visibili

Android查缺补漏(View篇)--在 Activity 的 onCreate() 方法中为什么获取 View 的宽和高为0?

在 Activity 的 onCreate() 方法中为什么获取 View 的宽和高为0 ? @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_my_view); myview = ViewUtils.find(this, R.id.myview); getViewSize("onCr

解决在onCreate()过程中获取View的width和Height为0的4中方法

很经常当我们动态创建某些View时,需要通过获取他们的width和height来确定别的view的布局,但是在onCreate()获取view的width和height会得到0.view.getWidth()和view.getHeight()为0的根本原因是控件还没有完成绘制,你必须等待系统将绘制完View时,才能获得.这种情况当你需要使用动态布局(使用wrap_content或match_parent)就会出现.一般来讲在Activity.onCreate(...).onResume()方法中

spring mvc DispatcherServlet详解之三---request通过ModelAndView中获取View实例的过程

整个spring mvc的架构如下图所示: 上篇文件讲解了DispatcherServlet第二步:通过request从Controller获取ModelAndView.现在来讲解第三步:request 从ModelAndView中获取view对象. 获取view对象一般是通过viewResolver来解析view name来完成的.若ModelAndView中view 不存在或者ModelAndView本身为null则填充默认值.代码如下: ModelAndView中view 不存在或者Mod

android应用程序中获取view的位置

获取View类界面控件的位置,有助于添加新的控件. 获取在parent里的相对坐标位置   这个比较简单,不用多说,直接调用View的方法:getLeft , getTop, getBottom, getRight获得. 获取在屏幕中的绝对位置 getLocalVisibleRect getGlobalVisibleRect 这个方法是构建一个Rect用来"套"这个view.此Rect的坐标是相对当前activity而言. 若是普通activity,则Rect的top为可见的状态栏高度

关于Android中根据ID名动态获取资源的两个方法

在开发中, 我们习惯了类似下面这种方式去实现引用资源: context.getResources().getDrawable(R.drawable.flower); 但是,当我们提前知道这个资源的id,想动态去引用,而不是在id里面固化应该怎么办呢? 比如某个图片资源的id是R.drawable.test_1, 而且有序的还有test_2,test_3, 我们如何动态的去引用它们?这里有两种方案:直接用反射和用resource的getIdentifier()方法,它们原理都差不多利用反射实现.

Android查缺补漏(View篇)--布局文件中的“@+id”和“@id”有什么区别?

Android布局文件中的"@+id"和"@id"有什么区别? +id表示为控件指定一个id(新增一个id),如: <cn.codingblock.view.customer_view.MyView android:id="@+id/myview" ... /> id表示引用一个现有的id,如: <cn.codingblock.view.customer_view.MyView android:id="@+id/myv