最近升级到了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();//上滑
除了下滑的运行效果达到了期望,其他三个方向的滑动执行后都只能看到目标区域整体下滑了一点点,请问是怎么回事啊?有什么其他方法能实现滑动么?
把 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 已经调整格式了,但是问题还没有解决啊~~请问你现在是怎么处理滑动事件的呢
#7 楼 @u1449475793 试了执行 js,依然不行...
还在 research。
对了,你的 app 是哪种类型的? Native, Webview or Hybird?
#9 楼 @u1449475793 嗯 当然咯 方便 +Q 么?
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)
以上代码能滑动,但是滑两次后,就不能继续执行了
楼主,我是测试小白,在安装 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 的~
#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);//向左滑动