【问题标题】:appium long press and than move element(drag and drop) is not workingappium 长按而不是移动元素(拖放)不起作用
【发布时间】:2016-07-05 04:59:47
【问题描述】:

我有一个这样的 IOS 应用测试场景:

  1. 长按一个元素。
  2. 将该元素移动到所需位置。

我正在使用以下代码:

TouchAction action = new TouchAction(driver)
action.long_press(element1).move_to(element2).wait(500).release().perform()

但它不适合我。需要任何好的建议。

【问题讨论】:

    标签: java appium appium-ios


    【解决方案1】:

    我也遇到了麻烦。但我像下面这样解决了这个问题:

    TouchAction action = new TouchAction(driver);
    action.longPress(elem1).waitAction(3000).moveTo(elem2).perform().release();
    

    waitAction 将等待完成longPress 操作,然后执行moveTo 操作。

    【讨论】:

      【解决方案2】:

      我发现没有一个 longPress() 组合可以工作,所以我得到了这个变体,你强制它执行按下然后移动。在 Android 和 iOS 上测试,似乎不适用于 UWP

      new TouchAction(driver)
          .press(PointOption.point(256, 1115))
          .waitAction(WaitOptions.waitOptions(Duration.ofMillis(2000)))
          .perform()
          .moveTo(PointOption.point(256, 600))
          .release()
          .perform();
      

      【讨论】:

      • press() 用于滚动,longPress() 用于拖动
      • longPress() 对我不起作用。尝试了投票最高的答案,但什么也没有。我有一个在画布上绘制的自定义视图。不知道这是否与它有关,但这是唯一适用于我的 Android 和 iOS 的解决方案
      【解决方案3】:
      //You need to import following 
      import org.openqa.selenium.WebElement;
      import io.appium.java_client.TouchAction;
      import io.appium.java_client.touch.LongPressOptions;
      import io.appium.java_client.touch.offset.ElementOption;
      
      //first for the intial location to be long pressed
      WebElement first= driver.findElementByXPath("//*[@content-desc='15']");
      
      //second location on which you need to move to
      WebElement second= driver.findElementByXPath("//*[@content-desc='45']");
      
      TouchAction action = new TouchAction(driver);
      
      //performing the long press
      action.longPress(new LongPressOptions().withElement(new 
                             ElementOption().withElement(first))).perform();
      
      //performing the move to touch operation
      action.moveTo(new ElementOption().withElement(second)).perform();
      

      【讨论】:

        【解决方案4】:

        如果你已经有元素的引用,那么你会这样做:

        TouchAction action = new TouchAction(driver);
                action.longPress(new ElementOption().withElement(first))
                        .waitAction(WaitOptions.waitOptions(Duration.ofMillis(3000)))
                        .moveTo(new ElementOption().withElement(last))
                        .release()
                        .perform();
        

        【讨论】:

          【解决方案5】:
          action.press(Element1).moveTo(Element2).release().perform();
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2017-06-11
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多