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

坚持原创输出,点击蓝字关注我吧

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

作者:清菡

博客:oschina、云+社区、知乎等各大平台都有。

目录

一、滑屏操作

1.访问之后,马上就滑屏可以吗?

2.连续实现 2 次滑屏

3.代码

二、模拟触屏

1.短按和点击的区别?

2.用坐标还是元素?

3.引入 TouchAction

4.每个行为函数都有 3 个参数

5.首先确定每一个点的位置

6.代码

三、注意

一、滑屏操作

不需要看到欢迎页面,直接做里面的后续操作就好了。也就是我想记住一些用户的习惯, 不要像第一次访问一样,有一个重置与否,给它关闭了。

# 重置与否 desired_caps["noReset"]=True 1.访问之后,马上就滑屏可以吗?

不可以。先等待首页有个元素出现,再去滑屏。滑屏操作需要时间,模拟器或者真机执行操作更需要时间。如果直接滑动 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 安卓 from appium import webdriver import time from selenium.webdriver.support.wait import WebDriverWait from selenium.webdriver.support import expected_conditions as EC from appium.webdriver.common.mobileby import MobileBy desired_caps={} # 平台类型 desired_caps["platformName"]="Android" # 平台版本号 desired_caps["platformVersion"]="7.0" # 设备名称 desired_caps["deviceName"]="XPUDU17713003790" # app 包名 desired_caps["appPackage"]="com.tencent.mm" # app 入口 acitivity desired_caps["appActivity"]="com.tencent.mm.ui.LauncherUI" # 重置与否 desired_caps["noReset"]=True # aapt dump badging 包名 # 连接Appium server。前提:appium desktop要启动。有监听端口。 # 将desired_caps发送给appium server。打开app driver = 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、width size= driver.get_window_size() start_x=size['width']*0.9 start_y=size['height']*0.5 end_x=size["width"]*0.1 end_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 中提供了专门的TouchAction类来做这件事。

Press、longPress和release组合起来使用的。长按和短按的时间长度不同。

move_to手按住别松开,一直滑动到另外一个点。在每一个操作之间都调用下wait,暂缓下它们的操作间隙,不然太快了,看起来就是一团乱麻。

1.短按和点击的区别?

短按是按住不松开,但是时间比较短。tap是点完就松开,不需要组合别的一起用。有Press就必须有release,不然就一直按着上面动都不动了。

发送命令后,只有调用perform才能真的去执行些操作命令,否则是不行的。

将所有的行为按要求放在列表中,可以将列表中所有的东西取消cancel。

滑屏操作是在屏幕上按住一个点,然后滑动到另外一个点,最后把它松掉。

九宫格就是个典型的触屏应用。

图片来自网络

2.用坐标还是元素?

元素方便简单,但是不是你想选就一定是哪一种。一种情况,9 个点都是独立的元素,那么用元素就可以了;第二种情况,9 个点都在一个元素里面怎么办?就没有办法实现元素的移动,因为就一个元素。这个时候就必须要用坐标。

坐标需要精确定位。需要思考每个坐标之间的关系。

3.引入 TouchAction

from appium.webdriver.common.touch_action import TouchAction

TouchAction 的源码:

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

4.每个行为函数都有 3 个参数

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

swipe滑屏操作是没有元素的,针对的是整个屏幕。屏幕的话就只能通过坐标点。所以你看swipe的源码就可以看到。

看下 swipe 的实现-源码: action = TouchAction(self) #首先实例化TouchAction action \ .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.首先确定每一个点的位置 选择一个元素上的坐标,大概会选哪个位置的?

中心。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wpxdpg.html