Robotium之无法识别控件点击

发表于:2015-8-06 10:23

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:街头要饭    来源:51Testing软件测试网采编

  手机测试比较常用的就是点击,不管事按钮,是图片,是输入框,等等等等都需要点击;
  1、正常点击:solo.clickOnText("^登录?")
  正常输入:solo.waitForText("^账号?", 1, 10000);
  solo.enterText(0, "00195852");
  solo.enterText(1, "password");
  2、登录按钮时图片,无法用上面方法怎么办?
  clickOnScreen(float x, float y)
  x,y就得你手机打开开发者选项中的【指针位置】手指放上去会显示
  那如果是固定位置,比如1/2处。右下角。左上角;那就可以获取手机屏幕了代码如下:
  //1、导入包
  import android.util.DisplayMetrics;
  //2、获取手机屏幕分辨率的类
  private DisplayMetrics dm ;
  //3、初始化参数
  dm = new DisplayMetrics();
  solo.getCurrentActivity().getWindowManager().getDefaultDisplay().getMetrics(dm) ;
  //4、获得手机的宽带和高度像素单位为px
  String str = "手机屏幕分辨率为:" + dm.widthPixels+" * "+dm.heightPixels;
  点击时候如果是最中间clickOnScreen(dm.widthPixels/2,dm.heightPixels/2)
  3、通过ID来点击代码实现如下:
private int clickCtrlById(String s, int t){
int ctrl;
View v;
if( s == ""){
return -1;
}
ctrl = solo.getCurrentActivity().getResources().getIdentifier(s,"id",solo.getCurrentActivity().getPackageName());
v = solo.getView(ctrl);
solo.clickOnView(v);
solo.sleep(t);
return 0;
}
private int enterTextById(String id, String s, int t ){
int ctrl;
EditText v;
if( s == ""){
return -1;
}
ctrl = solo.getCurrentActivity().getResources().getIdentifier(id,"id",solo.getCurrentActivity().getPackageName());
v = (EditText) solo.getView(ctrl);
solo.enterText(v, s) ;
solo.sleep(t);
return 0;
}
  其调用方法为:
  clickCtrlById("ID", 10000) ;
  enterTextById("ID","要输入的内容",10000)
  如果碰到还不能点击的情况可以再反映给我,我会帮你想办法
  以上如果非要用id点击还可以使用以下方法获取ID但是意义不大,为什么呢?因为知道的string直接使用第一种办法点击就完事了,但是技术还是分享以下,也有可取之处
  Activity act=solo.getCurrentActivity();//获取Activity
  int id=act.getResources().getIdentifier("^登录?", "id", act.getPackageName());//通过String的id获取int的id
  View view=act.findViewById(id);//获取View
  solo.clickOnView(view);//点击
  这段代码虽然没啥用,但是如果你需要找到对应的ID,然后用用id做什么事情还是可取的;
  以上就是按钮点击的分享内容;
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号