appium 长按而不是移动元素(拖放)不起作用

Posted

技术标签:

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

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

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

我正在使用以下代码:

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

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

【问题讨论】:

【参考方案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();

【讨论】:

以上是关于appium 长按而不是移动元素(拖放)不起作用的主要内容,如果未能解决你的问题,请参考以下文章

Appium 中的 waitAction(Duration) 不起作用

Ng-click 不起作用 Dragula 拖放元素

Javascript - 在 Internet Explorer 和 Edge 中拖放不起作用

Appium android按钮单击不起作用?

findElement 在 Android 上的 Appium 中不起作用

android appium单击“content-desc”属性不起作用