robotium之无法识别控件点击

手机测试比较常用的就是点击,不管事按钮,是图片,是输入框,等等等等都需要点击;

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做什么事情还是可取的;

以上就是按钮点击的分享内容;

时间: 2024-10-10 02:31:15

robotium之无法识别控件点击的相关文章

【Android UI】案例04配置控件点击效果(selector)

本例采用XML(selector),配置控件点击效果的实现,即当控件被触发或点击获取到焦点时,出现样式上的改变,以便给以较好的用户体验与操作感.本例需要引入的核心知识点的selector.xml.请参考学习:http://blog.csdn.net/mahoking/article/details/23690857.本例用于演示点击效果的控件为TextView.Button. [转载使用,请注明出处:http://blog.csdn.net/mahoking] 首先需要配置selector.xm

ABBYY FineReader Engine泰比OCR文字识别控件桌面版说明

FineReader Engine用于开发ocr文字识别软件和图片识别软件,提供自己的OCR API, 包括光学字符识别(OCR).智能字符识别(ICR).光标识别(OMR).光学条码识别(OBR).文档图片.PDF转换技术和 图像识别技术. 新的泰比(ABBYY)FineReader Engine 10将使你体会到非同一般的OCR文字识别软件质量和可用性: 选择泰比(ABBYY)FineReader Engine 10,将获得无与伦比的准确性.更高的ocr技术的质量和速度.与众不同的功能性以及

关于Android PopupWindow中实用Spinner控件点击APP Crash情况整理!

场景异常信息如下: android.view.WindowManager$BadTokenException: Unable to add window -- token [email protected] is not valid; is your activity running? at android.view.ViewRootImpl.setView(ViewRootImpl.java:646) at android.view.WindowManagerGlobal.addView(Wi

VintaSoftBarcode.NET Library 条形码识别控件

VintaSoftBarcode.NET Library 条形码识别控件是一个完美的条码读写.NET 库,支持从数码图片读取条码或者生成数码图片条码. 具体功能: 支持多线程 支持创建条码图片 支持为生成的条形码指定大小和分辨率 拥有许多选项控制条码创建 支持从图片对象.图片文件.和PDF文档读取条码 编程环境:.NET 框架. 这是一个可完全操纵的.NET 库,保证在.NET 框架中实现快速工作. 能够识别图片中的所有条码. 确认已识别的条码类型. 返回条码的字符串值. 自动检测条码的方位.

GridView控件点击单元格如何获取该列的列标题

本博文Insus.NET教你实现在GridView控件中,用mouse点击某单元格之后,希望能获取到该列的列标题. 创建一个网页,创建一个GridView控件: 去cs绑定数据给GridView控件: 下面我们需要写注册click事件,以便获取被点击的行或列索引.在网页中override Render()方法,为cell添加attributes “onclick”事件. 现在我们需要为GridView控件添加一个事件,添加一个Label,用来显示所获取的列名.去.aspx的html markup

winform自定义控件中其他遮挡控件点击事件

自定义控件在其他窗口调用时,里面的lable阻挡了控件的点击事件 解决方法 自定义控件中lable的 点击事件 private void Lable1_Click(object sender, EventArgs e) { base.OnClick(e);//触发控件点击事件 } 原文地址:https://www.cnblogs.com/shoumufan/p/10276311.html

在CTreeCtrl控件点击事件中获取点击的项

网上搜了一下,有两种方法: 1.使用GetSelectedItem() HTREEITEM hItem = m_treeCtrl.GetSelectedItem(); CString strText = m_treeCtrl.GetItemText(hItem); MessageBox(strText); 2.使用HitTest() CPoint pt; GetCursorPos(&pt); m_treeCtrl.ScreenToClient(&pt); UINT uFlags; HTRE

DuiLib的Combo控件点击无响应的问题

注:此问题具有特殊性,不具有普适性.结果虽然让人很崩溃,但毕竟折磨了自己一个下午的时间,记录下来永记于此. 今天的DuiLib开发过程中遇到了一个Combo点击没有反应,无法弹出下拉菜单的问题.此问题一出,遍寻网络无果,最终通过自己灵光一闪的思考,终于找到问题的原因. 在不久前,为了让整个窗口都能够拖动,于是在xml中将Caption设置为了整个窗口,然后在代码的OnNcHitTest()函数中增加当时有的几个需要点击的控件.当这次添加Combo控件后,将这件事情忘记了.于是在这种情况下点击Co

DuiLib 自定义识别控件

遇到一个断点无法识别自定义的控件,运气比较好,一搜就搜出来了: 参考地址:http://www.bkjia.com/ASPjc/992050.html 主要是这个函数: CControlUI* CDialogBuilder::Create(STRINGorID xml, LPCTSTR type, IDialogBuilderCallback* pCallback, CPaintManagerUI* pManager, CControlUI* pParent) 这个函数 的第一个参数指定为xml