首页 > 解决方案 > Uiautomator 中两次单击的时间差

问题描述

我正在使用 UiAutomator 来测量两次点击之间的时间差,但是我得到的两次点击之间的时间差超过了秒表手动测量的实际时间差。

这是场景:我必须将图像保存到设备,单击Start到将开始将图像保存到设备,直到它OK带有完成消息的弹出窗口。所以我正在测量这个时间间隔。

这是我的源代码:

UiObject start_ok = mDevice.findObject(new UiSelector().text("OK"));
// Staring time measuring.......
   starting_time = System.currentTimeMillis();
   start_ok.click();
boolean complete_ok = mDevice.wait(Until.hasObject(By.text("OK")), 10000);
if (complete_ok)
{
  UiObject finished_ok = mDevice.findObject(new UiSelector().text("OK"));
  // Finished time calculating ....
  ending_time = System.currentTimeMillis();
  finished_ok.click();
}
 diff = ending_time - starting_time;

我得到的上述时间差异比我手动执行的时间要多。请给我一个理由。还建议我如何克服这个问题?如何测量两次点击之间的准确时间?

标签: androidui-automation

解决方案


在指令中

boolean complete_ok = mDevice.wait(Until.hasObject(By.text("OK")), 10000);

您的 android 设备将等待 10 秒钟,然后单击 OK 按钮。

我认为将其更改为

UiObject finished_ok = mDevice.findObject(new UiSelector().text("OK"));
while(!finished_ok.exists()){
   finished_ok = mDevice.findObject(new UiSelector().text("OK"));
}
ending_time = System.currentTimeMillis();
  finished_ok.click();

应该有帮助。在这里,您正在等待下一个 OK 按钮的出现,而不是 10 秒的显式等待。


推荐阅读