Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/322.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java appium长按并移动元素(拖放)不起作用_Java_Appium_Appium Ios - Fatal编程技术网

Java appium长按并移动元素(拖放)不起作用

Java appium长按并移动元素(拖放)不起作用,java,appium,appium-ios,Java,Appium,Appium Ios,我有一个测试IOS应用程序的场景,如下所示: 长按一个元素 将该元素移动到所需位置 我正在使用以下代码: TouchAction action = new TouchAction(driver) action.long_press(element1).move_to(element2).wait(500).release().perform() 但这对我不起作用。需要任何好的建议。我也为此遇到了麻烦。但我是这样解决的: TouchAction action = new TouchAction(

我有一个测试IOS应用程序的场景,如下所示:

  • 长按一个元素
  • 将该元素移动到所需位置
  • 我正在使用以下代码:

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

    但这对我不起作用。需要任何好的建议。

    我也为此遇到了麻烦。但我是这样解决的:

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

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

    我发现longPress()组合都不起作用,所以我使用了这个变体,强制它执行按下,然后移动。在Android和iOS上测试,似乎对UWP不起作用

    action.press(Element1).moveTo(Element2).release().perform();
    
    new TouchAction(driver)
        .press(PointOption.point(256, 1115))
        .waitAction(WaitOptions.waitOptions(Duration.ofMillis(2000)))
        .perform()
        .moveTo(PointOption.point(256, 600))
        .release()
        .perform();
    
    如果您已经有了元素的引用,那么您可以这样做:

    按()代表滚动,长按()代表绘图。长按()不适合我。我试过了投票数最高的答案,但什么都没有。我有一个自定义视图,我自己画在画布上。我不知道这是否与此有关,但这是唯一适用于我的Android和iOS的解决方案
    //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();
    
    TouchAction action = new TouchAction(driver);
            action.longPress(new ElementOption().withElement(first))
                    .waitAction(WaitOptions.waitOptions(Duration.ofMillis(3000)))
                    .moveTo(new ElementOption().withElement(last))
                    .release()
                    .perform();