我的问题的史前史:
我正在学习UI自动机(2.1.3)咖啡测试使用简单的Mac航空(2014)机器人工作室(3.0.1)+。此前我已经创建的功能套件,测试运行和它的很长一段时间正常工作。但上周我已经注意到相关的UI Automator动作奇怪的行为: - 我不能在我当前的项目,也不Android上的元素执行上的元素单一的点击。例如相当长一段时间我在项目中使用的元素上点击通过ID,但现在这些方法都不起作用。测试已经通过,但在屏幕上和应用程序的状态没有结果,下面是简单的例子:
UiDevice mDevice = UiDevice.getInstance(InstrumentationRegistry.getInstrumentation());
String contentOfMyElement = "";
UiObject myObject = mDevice.findObject(new UiSelector().text(getInstrumentation().getTargetContext()
.getString((R.id.idOfMyElement))).text(contentOfMyElement)
.clickable(true).checkable(false));
mObject.click();
这种结构的所有对象突然变得非功能,测试通过,成功的,但没有与应用程序状态去。这种结构已为功能在我的项目很长一段时间,但现在它的所有测试的非功能。
我试图解决它在未来的方式:
所有这些项目解决不了,我所面临的问题。此外,我已经在另一个Android项目上面的例子尝试,它不起作用了。
我可以看到在某个地方UI的Automator或在最新的Android 3.0.1工作室所有我知道现在的问题 - )用户界面的Automator执行mDevice.pressHome(,背部等,但不要对我的应用程序的具体内容进行任何操作。
有谁知道如何解决UI Automator的行为?
您可以在Android Studio中调试,就可以得到正确的“myObject的”? “myObject的”将包含边界与该元件的位置,“点击()”动作将执行在中心位置的一个点击。
在另一方面,你正在使用uiautomator 2.0,你应该正餐一个UIObject UiObject2代替。
BySelector selector = By.res("resourceID");
UiObject2 obj = mDevice.findObject(selector);
所以可能这将是对别人有用的,只记得UIObject类应该只包含一个组件标识符(UIObject类不允许使用的组件ID +组件TEXT或DESCR不管)。
样品:
UiObject myObject = mDevice.findObject(new UiSelector().text(getInstrumentation().getTargetContext()
.getString((R.id.idOfMyElement)))
.clickable(true).checkable(false));
要么
UiObject myObject = mDevice.findObject(new UiSelector().text(getInstrumentation().getTargetContext()
.text(contentOfMyElement)
.clickable(true).checkable(false));