滑动方法在android自动化测试中不起作用

时间:2014-03-24 10:15:02

标签: android testing automation selenium-webdriver appium

我正在尝试实施滑动方法。我知道实现目标的正确方法是什么?

public void swipeWithCordinateLocation(WebDriver driver,double startX,
                                       double  startY,double endX,double endY,
                                       double Duration)
{
JavascriptExecutor js = (JavascriptExecutor) driver;
HashMap<String, Double> swipeObject = new HashMap<String, Double>();
swipeObject.put("x", startX);
swipeObject.put("y", startY);
swipeObject.put("x", endX);
swipeObject.put("y",endY );
swipeObject.put("duration", Duration);
// HashMap[] param = {swipeObject};
js.executeScript("mobile: swipe", swipeObject);

}

common.swipeWithCordinateLocation(driver, 100.00, 500.00, 500.00, 500.00, 1.00);

但appium执行滑动但需要不同的凭据

[x=360][y=592]
 to [x=360][y=592]

。该怎么办? 任何人都可以帮助我。

4 个答案:

答案 0 :(得分:1)

在自动化中分析滑动的最佳方法是启用&#34;显示触摸&#34;和&#34;指针位置&#34;开发人员选项中的选项。

滑动参数的正确代码是 -

swipeObject.put("startX", 198.00);
swipeObject.put("startY", 685.00);
swipeObject.put("endX", 198.00);
swipeObject.put("endY", 550.00);
swipeObject.put("duration", 1.0);

希望这有帮助。

甚至更好的方法是使用像使用分数的东西 -

swipeObject.put("startX", 0.50);
swipeObject.put("startY", 0.50);
swipeObject.put("endX", 0.50);
swipeObject.put("endY", 0.35);
swipeObject.put("duration", 1.0);

答案 1 :(得分:1)

最好的解决方案是使用AppiumDriver的swipe(),如下所示:

向左滑动:

 public void swipeLeft()
  {
      AppiumDriver appiumDriver = (AppiumDriver) driver;
      appiumDriver.context("NATIVE_APP"); 
      Dimension size = appiumDriver.manage().window().getSize(); 
      int startx = (int) (size.width * 0.8); 
      int endx = (int) (size.width * 0.20); 
      int starty = size.height / 2; 
      appiumDriver.swipe(startx, starty, endx, starty, 1000);

  }

向右滑动:

 public void swipeRight()
  {
      AppiumDriver appiumDriver = (AppiumDriver) driver;
      appiumDriver.context("NATIVE_APP"); 
      Dimension size = appiumDriver.manage().window().getSize(); 
      int endx= (int) (size.width * 0.8); 
      int startx = (int) (size.width * 0.20); 
      int starty = size.height / 2; 
      appiumDriver.swipe(startx, starty, endx, starty, 1000);

  }

答案 2 :(得分:1)

您可以使用TouchAction

获得相同的滑动结果
    TouchAction action = new TouchAction(androidDriver);
    action.press(0, 500)
            .waitAction(200)
            .moveTo(0, 200)
            .release()
            .perform();

只需使用坐标即可获得所需的滑动。

答案 3 :(得分:0)

您也可以使用uiautomator。 它将帮助您非常有效和快速地自动化测试用例。

您可以在http://developer.android.com/tools/help/uiautomator/index.html

了解更多相关信息