如何发送假冒的'命令Appium

时间:2015-03-09 08:04:01

标签: android selenium appium

我正在尝试使用appium测试我的Android应用程序,我正在寻找以下问题的解决方案: 在我的应用程序中,我有一个需要时间(用于图像处理)的部分,有时可能需要一分钟,两分钟甚至更长时间取决于图像大小,质量。

在我的测试用例中,我试图等待让我们说30秒然后我正在检查图像处理是否完成。

问题是如果我等了太久,我收到了下一条消息: info:[debug]在60秒内没有得到新命令,关闭......

我不想设置'newCommandTimeout'因为我想缩短测试时间,我想测试检查它是否每隔短时间完成一次。 另外,我不能使用等待元素或类似于appium API的东西,因为我正在使用第三方库,它告诉我图像处理何时完成。

我的问题是,有任何方法可以向appium发送'假'命令,所以每30秒我的线程恢复工作,如果我发现图像处理没有完成,我会发送一个假命令然后回去睡30秒而不用担心appium服务器因超时而关闭?

2 个答案:

答案 0 :(得分:1)

不确定您使用的是wait命令。使用此:

WebDriverWait wait = new WebDriverWait(driver, 10);
        wait.until(ExpectedConditions.visibilityOfElementLocated(locator)); 

这将等到它在屏幕上找到元素。

答案 1 :(得分:0)

除了这里的评论:

为了解决这个问题,我将WebDriverWait与自定义的ExpectedCondition一起使用,它看起来像:

new WebDriverWait(mDriver, 30)           // 30 is for the time out
    .withMessage("You can set any custom error message")
    .until(new ExpectedCondition<Boolean>() {
          @Override
          public Boolean apply(WebDriver d) {
                //This function will be called repeatedly until 
                //the return value will be true 
          }

    });

你可以看到WebDriverWait的其他实现,实际上我认为它适用于任何Object而不是Boolean。