Appium Appium 1.6 里怎么实现左划?

毛小利 · 2016年10月28日 · 最后由 毛小利 回复于 2017年01月04日 · 3460 次阅读

最近升级到了Xcode 8,Appium 1.6 正式版,切换到 WebDriverAgent 进行iOS APP的自动化测试,发现以前用的swipe 不好用了:

代码如下:

TouchAction mySwipe1= new TouchAction(driver)
          .press(260, 478)
          .waitAction(2000)
          .moveTo(100, 478)
          .release();

  mySwipe1.perform();//左划

  TouchAction mySwipe2= new TouchAction(driver)
          .press(100, 478)
          .waitAction(2000)
          .moveTo(260, 478)
          .release();

  mySwipe2.perform();//右划

  TouchAction mySwipe3= new TouchAction(driver)
          .press(100, 100)
          .waitAction(2000)
          .moveTo(100, 478)
          .release();

  mySwipe3.perform();//下滑

  TouchAction mySwipe4= new TouchAction(driver)
          .press(100, 478)
          .waitAction(2000)
          .moveTo(100, 100)
          .release();

  mySwipe4.perform();//上滑

除了下滑的运行效果达到了期望,其他三个方向的滑动执行后都只能看到目标区域整体下滑了一点点,请问是怎么回事啊?有什么其他方法能实现滑动么?

alt

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
共收到 26 条回复 时间 点赞

把 end x end y 看成相对值就可以了

#1 楼 @run_ice_l 谢谢,我试一下~

#2 楼 @u1449475793 把格式用 markdown 调整下吧. 解决了把方案贴出来告诉大家.

#1 楼 @run_ice_l 谢谢,原来我一直都用错了😂

TouchAction mySwipe1= new TouchAction(driver)
    .press(200, 480)
    .waitAction(2000)
    .moveTo(-100, 0)
    .release();

 mySwipe1.perform();//左划

将代码该成相对坐标后执行界面上反倒没有任何滑动的迹象了。。能帮忙再看一下哪里还有问题么?
运行日志:

  • [MJSONWP] Calling AppiumDriver.performTouch() with args: [[{"action":"press","option...
  • [debug] [XCUITest] Executing command 'performTouch'
  • [JSONWP Proxy] Proxying [POST /uiaTarget/0/dragfromtoforduration] to [POST http://localhost:8100/session/C196489D-6894-4A0D-B8A9-D4589AFF8FB9/uiaTarget/0/dragfromtoforduration] with body: {"fromX":200,"fromY":480,"toX":100,"toY":480,"duration":1}

Xcode 8, appium 1.6.0(beta3), app 为 hybird 的 (绝大部分是 webview), 跑某一个页面 (webview 时), swipe 向上,坐标值传递: swipe(300, 600 , 0, -300, 1000),表示从 300, 600, 滑动到 300, 300, 结果:失败. 多方咨询无果 -0- 无奈了...

#3 楼 @seveniruby 已经调整格式了,但是问题还没有解决啊~~请问你现在是怎么处理滑动事件的呢❓

#5 楼 @ReaLau 按我这边的运行效果来看,向下滑动是可以正常实现的,而其他三个方向的滑动都不行,请问你现在有找到合适的方法实现了么❓

#7 楼 @u1449475793 试了执行 js,依然不行...
还在 research。
对了,你的 app 是哪种类型的? Native, Webview or Hybird?

#8 楼 @ReaLau 我的是 Native App~有好的解决方案可一定要 Share 哈~

#9 楼 @u1449475793 嗯 当然咯 方便 +Q 么?

#10 楼 @ReaLau 不怎么上 QQ 的,加了也没什么用啊~在 TeseterHome 社区就足够啦😀

http://blog.csdn.net/hqzxsc2006/article/details/51602481 你们看下,你看你们能解决不 我试了很多参数还是不行

#13 楼 @fangdatong 链接里的说法就是一楼提供的解决方法,试过了,还是不可以的😭

#14 楼 @u1449475793 我也试了很多参数还是不行,我弄了一下午了还是没解决

@u1449475793 touch action 暂时还不支持,直接使用 swipe 方法吧

#16 楼 @run_ice_l AppiumDriver 里的 swipe 方法封装的就是 touch action 啊

/**
 * @see TouchShortcuts#swipe(int, int, int, int, int)
 */
    @Override
    public void swipe(int startx, int starty, int endx, int endy, int duration) {
        TouchAction touchAction = new TouchAction(this);

        // appium converts press-wait-moveto-release to a swipe action
        touchAction.press(startx, starty).waitAction(duration)
                .moveTo(endx, endy).release();

        touchAction.perform();
    }

直接使用 swipe 也是遇到同样的问题哦~

appium 1.6 你怎么升的啊?

width = self.driver.get_window_size()['width']
self.driver.swipe(int(width), 200, -1 * int(width), 0, 800)

以上代码能滑动,但是滑两次后,就不能继续执行了

#20 楼 @junewang 3q 解决了 之前用直接加上- 报错 原来要加-1*

楼主,我是测试小白,在安装 appium lient ,应该是 npm install wd 吧,但是总报错 npm WARN enoent ENOENT: no such file or directory, open '/Users/zhanglei/package.json'
npm WARN zhanglei No description
npm WARN zhanglei No repository field.
npm WARN zhanglei No README data
npm WARN zhanglei No license field.
,我看网上有直接安 java python 的 ,但我看 appium 还支持 oc 我能直接安 oc 的库吗

@u1449475793
Webview 的我解决了
采用的是执行 JS 的办法,可以滑动到指定的元素地点,不好的地方就是要求必须会写 JS;
NativeAPP 的还没研究

#19 楼 @dzn
#18 楼 @addison
我当时是按照Appium 1.6 ios 无缝升级 里的步骤升级到 Appium 1.6 的~

#22 楼 @next2016 不好意思,我使用的是 JAVA,不了解你说的内容,你可以在论坛里多找找~

#20 楼 @junewang 十分感谢!可以实现各个方向的滑动了:


int width = driver.manage().window().getSize().getWidth();
int height = driver.manage().window().getSize().getHeight();

driver.swipe(width/2, 200, 0, 200, 2000);//向下划动

driver.swipe(width/2, height*2/3, width/2, -1* height/3, 2000);//向上划动

driver.swipe(width * 3 / 4, 100, -1* width / 4, 0, 1000);//向左滑动

毛小利 关闭了讨论 01月04日 15:55
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册