Appium 阿皮姆公司;Java:如何执行快速单击操作?

Appium 阿皮姆公司;Java:如何执行快速单击操作?,appium,appium-android,Appium,Appium Android,我想在Android应用程序中对一个按钮执行10次快速点击操作(首选0.5s),但接下来的10次点击间隔太长(约1.5秒间隔)。 想知道在Appium Java中缩短每次点击间隔的正确方法是什么? 提前感谢:) for(int i=1;i您可以查看TouchAction/MultiAction类,其中您可以定义事件序列,然后立即执行它: 在您的情况下,它可能是这样的(例如2次单击) MobileElement el=driver.findElement(By.id(“btnA”)) Touch

我想在Android应用程序中对一个按钮执行10次快速点击操作(首选0.5s),但接下来的10次点击间隔太长(约1.5秒间隔)。 想知道在Appium Java中缩短每次点击间隔的正确方法是什么? 提前感谢:)


for(int i=1;i您可以查看TouchAction/MultiAction类,其中您可以定义事件序列,然后立即执行它:

在您的情况下,它可能是这样的(例如2次单击)

MobileElement el=driver.findElement(By.id(“btnA”))
TouchAction动作0=新的TouchAction(驱动程序)。点击(el)
TouchAction动作1=新的TouchAction(驱动程序)。点击(el)
MultiAction(驱动程序)。add(操作0)。add(操作1)。perform()


希望你有这个想法

在你的例子中,你每次都在for循环中找到元素,这占用了你注意到的额外时间。为了缩短你的时间,最好是找到元素一次,然后按你想要的次数点击它

例如

MobileElement元素=driver.findElement(By.id(“btnA”);
对于(int i=1;i
  • 你的方法花了我5882ms

  • Wasiq Bhamla方法花费了我3622ms的时间

  • dmle不起作用,因为它是同时点击的,所以即使有10个触摸动作,它也会点击一次。而且它的多点触摸和点击(el)也不推荐

    使用10个独立分接头的dmle理念:

    for (int i = 1; i < 11; i++) {
        new TouchAction(driver).tap(element).perform();
    }
    
    for(int i=1;i<11;i++){
    新建TouchAction(驱动程序)。点击(元素)。执行();
    }
    
    我花了6915毫秒

  • 使用.press(el).release().press(el)

    TouchAction动作=新的TouchAction(驱动程序);
    对于(int i=1;i<11;i++){
    动作。按下(元素)。释放();
    }
    action.perform();
    
    我花了25285毫秒,哇


所以Wasiq Bhamla方法获胜了……我在Windows 10上使用appium 1.8.0 beta 3和java客户端6.0.0 beta 4。

Hi@tcardoso,感谢您的分析,我尝试了Wasiq Bhamla的方法,但每次单击之间的间隔时间仍然太长,我需要非常快的10次单击才能启动隐藏菜单……我尝试了xpath查找,但仍然没有luck,想知道是否还有其他方法?或者只是目前Appium的限制?(顺便说一句,我使用的是io.Appium 6.0.0-BETA4)谢谢!您好@Wasiq Bhamla谢谢您的回复,我尝试了您的方法,但每次单击之间的间隔时间仍然太长,我需要非常快的10次单击才能启动隐藏菜单…我尝试了xpath的findElement,但仍然没有运气,不知是否还有其他方法?或者这只是目前Appium的限制?(顺便说一句,我使用的是io.appium 6.0.0-BETA4)谢谢!一定有一些内部appium处理占用了您注意到的额外时间。您可以在GitHub上向appium Java客户端repo提出问题,他们应该能够确定需要花时间的地方。谢谢@Wasiq Bhamla,我现在已经在appium论坛上发布了我的问题:
MobileElement element = driver.findElement(By.id("btnA"));
for(int i=1; i<11; i++) {
  element.click();
}
for (int i = 1; i < 11; i++) {
    new TouchAction(driver).tap(element).perform();
}
TouchAction action =new TouchAction(driver);
for (int i = 1; i < 11; i++) {
    action.press(element).release();
}
action.perform();