TouchAction方法不适用于我的移动测试

时间:2016-10-11 16:58:13

标签: selenium appium

我有一个UI滑块组件。点击旋钮后,我可以左右拖动滑块。 我需要在移动设备上测试这个功能。我正在使用使用saucelabs的iOS和Android模拟器。

我尝试了以下代码:

    slider = appium.findElement(By.id("numInput"));
    int xStart = slider.getLocation().getX();
    int yStart = slider.getLocation().getY();
    int end= xStart + slider.getSize().getWidth();

    System.out.println(slider.getAttribute("aria-valuenow"));

    TouchAction action = new TouchAction(appium);
    int moveTo=(int)(end*0.1);
    action.longPress(xStart,yStart).moveTo(moveTo,yStart).perform();
    System.out.println(slider.getAttribute("aria-valuenow"));

但遇到错误: org.openqa.selenium.WebDriverException:未实现方法。 at line:action.longPress(xStart,yStart).moveTo(moveTo,yStart).perform();

然后我做了一些研究,发现我需要切换到Native_App才能让它正常工作

但是当我切换到Native App时:

    slider = appium.findElement(By.id("numInput"));
    int xStart = slider.getLocation().getX();
    int yStart = slider.getLocation().getY();
    int end= xStart + slider.getSize().getWidth();

    System.out.println(slider.getAttribute("aria-valuenow"));//slider val
    String originalContext = appium.getContext();
    appium.context("NATIVE_APP");
    TouchAction action = new TouchAction(appium);
    int moveTo=(int)(end*0.1);
    action.longPress(xStart,yStart).moveTo(moveTo,yStart).perform();
    System.out.println(slider.getAttribute("aria-valuenow"));

另一个错误:System.out.println(slider.getAttribute(" aria-valuenow")); org.openqa.selenium.NoSuchElementException:使用给定的搜索参数无法在页面上找到元素。

滑块也不会移动。

能力:

    caps.setCapability(MobileCapabilityType.DEVICE_NAME,iPhone 6 Plus Simulator);
    caps.setCapability(MobileCapabilityType.PLATFORM_VERSION, 9.3);
    caps.setCapability(MobileCapabilityType.BROWSER_NAME,Safari);
    caps.setCapability(MobileCapabilityType.APPIUM_VERSION, 1.5.3)
    if (appiumDriver.equalsIgnoreCase("iOS")) {
                appium = new IOSDriver(new URL(URL), caps);
     } else if (appiumDriver.equalsIgnoreCase("android")) {
                appium = new AndroidDriver(new URL(URL), caps);
     }

2 个答案:

答案 0 :(得分:0)

您可以使用滑动方法。

,而不是使用TouchAction
driver.swipe(startx, starty, endx, starty, 500);

答案 1 :(得分:0)

下面的代码对我有用,你可以尝试一下,touchShortcuts实际上是在这里做的。

((TouchShortcuts)驱动程序).swipe(startx,starty,endx,starty,500);