我有两个不同的(或者不是-.-)UiObjects,我想对它们进行比较。
我可以看看他们是否属于同一类,诸如此类,但这还不够。
我想过使用资源id,但我找不到访问它的方法(我想在运行时这样做,所以ui自动查看器没有帮助…)。
所以我实际上在问两件事:
- 我应该如何比较两个UiObjects(如果不是100%阳性,请靠近它)
- 是否有访问资源id的方法
提前谢谢。
编辑:我的想法是:
- 打开应用程序
- 识别其布局和小部件
- 检测不同小部件之间可能发生的交互
- 选择一个小部件并与之交互
- 验证是否是新屏幕或小部件上的更改
目前,我可以通过选择FrameLayout的第一个实例(对每个屏幕都适用)来访问布局树的根,从而访问其子级(作为UiObjects)
代码示例:
//I get the first object of the current layout screen by
UiObject obj = new UiObject(new UiSelector().className("android.widget.FrameLayout").instance(0));
/*
code to get rest of the tree ...
*/
/*
code interact with a button
*/
// now I want to see if the screen changed (completely new or if a new widget appeared) or if its the same
// for that I need to know if the objects are the same
// To compare objects I need their id
我没有写代码的原因是因为我认为它并没有真正增加太多。。。因为重要的是我不知道如何进行
好吧,我想明白了这么多:
- 使用UI Automator时,它与任何应用程序都不关联,因此无法获取应用程序的视图
- 无法访问与Ui对象对应的视图的id(原因与以前相同)
- 必须通过试探法进行比较,而不能100%肯定
总之,我想要的确实是不可能的。
View类有"getId"方法,您可以使用它来比较视图。例如,如果您的类实现了OnClickListener,那么您可以检查哪个视图引发了如下事件:
public void onClick (View view) {
switch(view.getId()) {
case R.id.my_button_1:
// What to do for button 1.
break;
case R.id.my_button_2:
// What to do for button 2.
break;
default:
// Unknown view
}
}