Appium appium1.1 版本使用 swipe 方法报错

tom_ma · 2014年06月17日 · 最后由 今天也是收获满满的一天啊 回复于 2019年01月18日 · 2411 次阅读

环境配置: appium1.1,windows 7,HTC one

public void setUp() throws Exception {
//配置 webdriver
DesiredCapabilities capabilities = new DesiredCapabilities();
capabilities.setCapability(CapabilityType.BROWSER_NAME, "");
capabilities.setCapability("platformName", "Android");
capabilities.setCapability("platform", "WINDOWS");
capabilities.setCapability("deviceName","HTC");
capabilities.setCapability("platformVersion", "4.2");
capabilities.setCapability("appPackage", "com.taobao.taobao");
capabilities.setCapability("appActivity", "com.taobao.tao.homepage.MainActivity3");
//appium 的独特地方,使用自己的 AppiumDriver, 它本身是继承自 WebDriver
driver = new AppiumDriver(new URL("http://127.0.0.1:4723/wd/hub"), capabilities);
//设置超时
driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
}

@After
public void tearDown() throws Exception {
driver.quit();
}

@Test
driver.swipe(157, 1029, 156, 1, 1);

takeScreenShot(driver);

appium 运行日志:

ERROR: debug: Appium request initiated at /wd/hub/session/616bac0b-bc9c-46e5-bfa9-bd1f2e3cca8f/touch/perform
info: Pushing command to appium work queue: ["swipe",{"startX":157,"startY":1029,"endX":156,"endY":1,"steps":0}]
ERROR: debug: Request received with params: {"actions":[{"action":"press","options":{"y":1029,"x":157}},{"action":"wait","options":{"ms":1}},{"action":"moveTo","options":{"y":1,"x":156}},{"action":"release","options":{}}]}
info: [BOOTSTRAP] [info] Got data from client: {"cmd":"action","action":"swipe","params":{"startX":157,"startY":1029,"endX":156,"endY":1,"steps":0}}
info: [BOOTSTRAP] [info] Got command of type ACTION
info: [BOOTSTRAP] [debug] Got command action: swipe
info: [BOOTSTRAP] [info] Swiping from [x=157.0, y=1029.0] to [x=156.0, y=1.0] with steps: 0
info: [BOOTSTRAP] [info] Returning result: {"value":"The swipe did not complete successfully","status":13}
info: Responding to client with error: {"status":13,"value":{"message":"An unknown server-side error occurred while processing the command.","origValue":"The swipe did not complete successfully"},"sessionId":"616bac0b-bc9c-46e5-bfa9-bd1f2e3cca8f"}

PS:使用 js.executeScript 方法,传入相同的值,倒是可以运行成功。

有小伙伴遇到同样的问题吗?请问怎么解决的,谢谢。

共收到 7 条回复 时间 点赞

我也遇到同样的问题,囧!!!滑动能够成功滑动,但是会报错,我尝试在源代码中注释掉报错语句,但是还是没用!跪求解决办法

还有你的 swipe() 的 duration 要设置大一点,300 以上

@tom_ma 你可以试试 @liuxiangyu 的方法 把 duration 设置到 200 以上试试先

加大 duration, 这个之前额文章有说过。 不过论坛搜索挂了而已。。

@liuxiangyu@lihuazhang,增大 duration 确实可以解决问题,但是为什么呢? 我以为 duration 越小滑动才会越快。 如何控制滑动的速度呢,我们手动划动,可以翻过一屏多的距离到页面底部,这个在脚本用 swipe 函数怎么实现呢。

另外我划动截屏后发现,同样的代码执行起来,划动的距离居然也不一样。难道脚本运行跟手机 wifi 的网速还有关系不成。

我是 4.1 的机子,用的这个方法。大家可以参考下。

划动

#direction 参数:element_id 参照对象,x 偏移量,y 偏移量,speed 划动速度
def swipe_screen_down(driver,element_id,x=0,y=-300,speed=0):
from selenium import webdriver
from selenium.webdriver.common.touch_actions import TouchActions
pages = driver.find_element_by_id(element_id)
touch_actions = TouchActions(driver)

touch_actions.flick_element(pages,x,y,speed).perform()

恒温说的那篇帖子有人找到嘛?为什么加大 duration 可以解决这个问题呢。

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