Appium 常用操作之微信滑屏、触屏操作

一、滑屏操作不需要看到欢迎页面,直接做里面的后续操作就好了 。也就是我想记住一些用户的习惯, 不要像第一次访问一样,有一个重置与否,给它关闭了 。
# 重置与否desired_caps["noReset"]=True1.访问之后,马上就滑屏可以吗?不可以 。先等待首页有个元素出现,再去滑屏 。滑屏操作需要时间,模拟器或者真机执行操作更需要时间 。如果直接滑动 2 次,第一次滑动效果还没展示出来就直接滑动第二次了,就会看到看不懂得现象 。所以这种情况下就要加上time 。
2.连续实现 2 次滑屏#从右向左滑driver.swipe(start_x,start_y,end_x,end_y,200)time.sleep(1)driver.swipe(start_x,start_y,end_x,end_y,200)3.代码# 微信 App Android/ target=_blank class=infotextkey>安卓from appium import webdriverimport timefrom selenium.webdriver.support.wait import WebDriverWaitfrom selenium.webdriver.support import expected_conditions as ECfrom appium.webdriver.common.mobileby import MobileBydesired_caps={}# 平台类型desired_caps["platformName"]="Android"# 平台版本号desired_caps["platformVersion"]="7.0"# 设备名称desired_caps["deviceName"]="XPUDU17713003790"# app 包名desired_caps["appPackage"]="com.tencent.mm"# app 入口 acitivitydesired_caps["appActivity"]="com.tencent.mm.ui.LauncherUI"# 重置与否desired_caps["noReset"]=True# aapt dump badging 包名# 连接 Appium server 。前提:appium desktop 要启动 。有监听端口 。# 将 desired_caps 发送给 appium server 。打开 appdriver = webdriver.Remote('http://127.0.0.1:4723/wd/hub',desired_caps)# ANDROID_UIAUTOMATOR 这个是一种定位表达式,用其它的表达式也是可以的 。loc=(MobileBy.ANDROID_UIAUTOMATOR,'new UiSelector().text("通讯录")')WebDriverWait(driver,30).until(EC.visibility_of_element_located(loc))#height、widthsize= driver.get_window_size()start_x=size['width']*0.9start_y=size['height']*0.5end_x=size["width"]*0.1end_y=size['height']*0.5#从右向左滑# 时间长短需要根据实际情况自己来调试,避免没滑过去,代码就执行完毕了 。driver.swipe(start_x,start_y,end_x,end_y,300)time.sleep(2)driver.swipe(start_x,start_y,end_x,end_y,300)二、模拟触屏

Appium 常用操作之微信滑屏、触屏操作

文章插图
 
滑屏也是触屏实现的 。手指在屏幕上点点点,在 Appium 中提供了专门的TouchAction类来做这件事 。
Press、longPress和release组合起来使用的 。长按和短按的时间长度不同 。
move_to手按住别松开,一直滑动到另外一个点 。在每一个操作之间都调用下wait,暂缓下它们的操作间隙,不然太快了,看起来就是一团乱麻 。
1.短按和点击的区别?短按是按住不松开,但是时间比较短 。tap是点完就松开,不需要组合别的一起用 。有Press就必须有release,不然就一直按着上面动都不动了 。
发送命令后,只有调用perform才能真的去执行些操作命令,否则是不行的 。
将所有的行为按要求放在列表中,可以将列表中所有的东西取消cancel 。
滑屏操作是在屏幕上按住一个点,然后滑动到另外一个点,最后把它松掉 。
九宫格就是个典型的触屏应用 。
Appium 常用操作之微信滑屏、触屏操作

文章插图
 
2.用坐标还是元素?元素方便简单,但是不是你想选就一定是哪一种 。一种情况,9 个点都是独立的元素,那么用元素就可以了;第二种情况,9 个点都在一个元素里面怎么办?就没有办法实现元素的移动,因为就一个元素 。这个时候就必须要用坐标 。
坐标需要精确定位 。需要思考每个坐标之间的关系 。
3.引入 TouchActionfrom appium.webdriver.common.touch_action import TouchAction
TouchAction 的源码:
Appium 常用操作之微信滑屏、触屏操作

文章插图
 
4.每个行为函数都有 3 个参数
Appium 常用操作之微信滑屏、触屏操作

文章插图
 
swipe滑屏操作是没有元素的,针对的是整个屏幕 。屏幕的话就只能通过坐标点 。所以你看swipe的源码就可以看到 。
看下 swipe 的实现-源码:action = TouchAction(self) #首先实例化 TouchActionaction.press(x=start_x, y=start_y).wait(ms=duration).move_to(x=end_x, y=end_y).release()action.perform()return self现在是它帮你封装好了 。实际上不用swipe,就用TouchAction自己去写都可以 。
x=end_x, y=end_y,没有用 el 。
5.首先确定每一个点的位置选择一个元素上的坐标,大概会选哪个位置的?中心 。


推荐阅读