Appium 程序引导页(向左滑动)

曾先僧 · 2015年04月19日 · 最后由 Reagan 回复于 2015年06月11日 · 486 次阅读

不知道在咱们有没有人发过这样的代码,以下资料来自朋友,他说来自网络,谢谢这位网络上的大神。😜

前言请看:http://testerhome.com/topics/2387

Robotium 的滑动方法我是不会封装的了,So sorry,但是感谢@chenhengjie123 👍 和我的朋友 @ 宋某 👍

//封装一个基于屏幕百分比进行滑动
private void scrollLeft() {
    int x=dr.manage().window().getSize().width;
    int y=dr.manage().window().getSize().height;
    dr.swipe(x/4*3, y/2, x/4*1, y/2, 500);// 500为duration, 请根据实际调整
}

我的是静态图片

for (int i = 0; i < 4; i++) {
    scrollLeft();
    Thread.sleep(1000);// 根据真实用户模拟场景进行滑动所需要的时间
}

最后一句:
缺陷啊缺陷,不多说了,还是祝 Appium 更上一层楼吧。

结果:

共收到 14 条回复 时间 点赞

这个就是我想让你做的封装啊。把你原来的 swipe 代码做成更通用的形式。
封装只是专业点的说法,说白了就是把你原来要几行代码干的活放到一个函数里一次性搞定嘛。

PS:这不能说是缺陷,是 webdriver api 没有这个方法而已。

#1 楼 @chenhengjie123 其实这个来自网络的方法有问题的,1/2 的屏幕滑动,对于 android 来说有可能滑动失败,跟开发的定义可能会有关系,所以我还是比较热衷于 robotium 的那个,只是 webdriver 没有,所以我就说是个遗憾了

3楼 已删除

#3 楼 @wisdom_maxl 1=0,i<4,i++,这是滑四次,如果经常碰到滑到一般滑不过去,把 4 换成 5,或者 6,多滑那么一两下

5楼 已删除
6楼 已删除

#4 楼 @mzl19860128 是的,把数字调大就是了,其实还有个坐标的,可以定义到 3/4 屏幕都可以,但是有个缺点,就是不同分辨率和尺寸的设备下测试就悲剧了

#5 楼 @wisdom_maxl @chenhengjie123 大神说了,webdriver 的方法就是这样了,哈哈

#7 楼 @mr_zeng 其实现在封装的这个scrollLeft有些地方还能改进:

  1. dr.swipe(x/4*3, y/2, x/4*1, y/2, 0); 这句的 duration 为 0 ,最好设成 500ms (0.5) 左右,更符合真实用户滑动的速度。
  2. 循环内部在 scrollLeft 完后最好 sleep 一下,否则像你们实际使用这种快速循环可能会出现上一次划的效果还没完全出来(那个引导页还在滑动动画中)就开始划下一次了。

#9 楼 @chenhengjie123 是的,图片滑动间应该都有个间隔停顿,然后用户模拟下滑动一张 scrollview 大概也是一秒左右,加起来就是 1500ms,再 * 图片数量,一般都是 5-10s,也是正常范围吧。

@chenhengjie123 你好,请教下关于引导页划屏的问题。我的是在 python 中执行 wd.execute_script("mobile: swipe", {"touchCount": 1,"startX": 350, "startY": 325, "endX": 10, "endY": 325, "duration": 0.5 }) 时总是报错:selenium.common.exceptions.WebDriverException: Message: Not yet implemented. Please help us: http://appium.io/get-involved.html。其中 wd = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps) , 调试了很久,一直划屏不了啊啊,问题出在哪里啊? thank you

#11 楼 @reagan swipe 方法现在不是这么用了。你查一下官网文档吧。

很好,赞!

@chenhengjie123 谢啦,查到了。现在是直接这样用了 wd.swipe(320, 300, 30, 300, 8000),踩了一个坑。但是现在这样,有时能划过去,有时划不过去

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册