Appium - 通过java代码轻扫Android设备

时间:2015-01-30 10:40:11

标签: java android appium

我是Appium自动化的新手。我试图在Android设备屏幕上执行滑动,下面的代码不起作用

 JavascriptExecutor js = (JavascriptExecutor) driver;
    HashMap<String, Double> swipeObject = new HashMap<String, Double>();
    swipeObject.put("startX", 0.95);
    swipeObject.put("startY", 0.5);
    swipeObject.put("endX", 0.05);
    swipeObject.put("endY", 0.5);
    swipeObject.put("duration", 2.0);
    js.executeScript("mobile: swipe", swipeObject);

JavascriptExecutor js = (JavascriptExecutor) driver;
    HashMap<String, Double> swipeObject = new HashMap<String, Double>();
    swipeObject.put("startX", 600.00);
    swipeObject.put("startY", 685.00);
    swipeObject.put("endX", 198.00);
    swipeObject.put("endY", 550.00);
    swipeObject.put("duration", 2.0);
    js.executeScript("mobile: swipe", swipeObject);;

抛出错误

org.openqa.selenium.WebDriverException: Not yet implemented. Please help us: http://appium.io/get-involved.html (WARNING: The server did not provide any stacktrace information)
Command duration or timeout: 16 milliseconds
Build info: version: '2.35.0', revision: '8df0c6b', time: '2013-08-12 15:43:19'
System info: os.name: 'Windows 8.1', os.arch: 'amd64', os.version: '6.3', java.version: '1.8.0_25'
Driver info: org.openqa.selenium.remote.RemoteWebDriver

如果滑动有任何替代方法,请提供链接。

提前致谢。

5 个答案:

答案 0 :(得分:4)

请使用(下面的代码将从左到右滑动表格)

    driver.context("NATIVE_APP");
    Dimension size = driver.manage().window().getSize();
    int startX = (int)(size.width * 0.10);
    int endX = (int)(size.width * 0.80);
    int startY = size.height/2;
    driver.swipe(startX, startY, endX, startY, 1000);

答案 1 :(得分:1)

在红宝石郎: 滑动(start_x:0.5,start_y:0.5,end_x:0.5,end_y:0.5,持续时间:6)对我有效。

在java中你可以使用&#34; swipe&#34; TouchShortcuts界面中的方法。请参考http://appium.github.io/java-client/

答案 2 :(得分:0)

你应该使用driver.swipe(0.95,0.5,0.05,0.5,2.0),因为其他手势但不支持:scroll / scrollTo不推荐使用。

https://github.com/appium/appium/blob/master/docs/en/advanced-concepts/migrating-to-1-0.md 特别值得注意的是,手势方法已被新的TouchAction / MultiAction API所取代,这种API允许将手势自动化放在一起的更强大和通用的方法。有关TouchAction / MultiAction的使用说明,请参阅Appium客户端。

您可以在此处查看更多信息:https://github.com/appium/appium/issues/4199

答案 3 :(得分:0)

driver.swipe(435,396,112,496,900);这是在Android设备中滚动屏幕的最佳方式。

答案 4 :(得分:0)

在Java中,我使用AndroidDriver下面的代码

androidDriver = new AndroidDriver(capabilities);
WebElement element = androidDriver.findElement(By.xpath(locator));
String originalContext = androidDriver.getContext();
int bottomY = element3.getLocation().getY();
int bottomX = element3.getLocation().getX();
androidDriver.context("NATIVE_APP");
androidDriver.swipe(28, 550, 28, 1, 900);
androidDriver.context(originalContext);

我只改变x&amp; y坐标用于修改。可能需要改进以适应不同的屏幕尺寸,但这有效。