每日更新(大概吧 )
这次谈谈有关界面点击方面的代码应该如何编写,本节代码方面比较多,可以拿去作为模板复制粘贴(手动狗头)
欢迎大家点击并输入暗号:CSDN来催更,和接待小姐姐说一下催更,就能更多爆更哦~~
书接上文:【appium】appium自动化入门之元素篇
API篇:【appium】appium自动化入门之API(上)
环境搭建篇:【appium】appium自动化入门之环境搭建(上)
目录
正文
2.10 滑动屏幕
2.10.1 swipe 介绍
- 查看源码语法,起点和终点四个坐标参数,duration 是滑动屏幕持续的时间, 时间越短速度越快。
默认为 None 可不填,一般设置 500-1000 毫秒比较合适。
swipe(self, start_x, start_y, end_x, end_y, duration=None)
Swipe from one point to another point, for an optional duration.
#从一个点滑动到另外一个点,duration 是持续时间
#参数:
- start_x - 开始滑动的 x 坐标
- start_y - 开始滑动的 y 坐标
- end_x - 结束点 x 坐标
- end_y - 结束点 y 坐标
- duration - 持续时间,单位毫秒
#:例如:
driver.swipe(100, 100, 100, 400)
- 值得注意的是,手机从左上角开始为 0点,横着的是 x 轴,竖着的是 y 轴
2.10.2 获取坐标
- 由于每个手机屏幕的分辨率不一样,所以同一个元素在不同手机上的坐标也是 不一样的,滑动的时候坐标不能写死了
要先获取屏幕的宽和高,再通过比例去 计算。
# coding:utf-8
from appium import webdriver
desired_caps = {
'platformName': 'Android',
'deviceName': '30d4e606',
'platformVersion': '4.4.2',
# apk 包名
'appPackage': 'com.taobao.taobao',
# apk 的 launcherActivity
'appActivity': 'com.taobao.tao.welcome.Welcome'
}
driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub', desired_caps)
# 获取屏幕的 size
size = driver.get_window_size()
print(size)
# 屏幕宽度
width print(size['width'])
# 屏幕高度
width print(size['height'])
- 运行结果:
例如:{u’width’: 720, u’height’: 1280}
宽:720
高:1280
2.10.3 封装滑动方法
- 把上下左右四种常用的滑动方法封装,这样以后想滑动屏幕时候就能直接调用 了
参数 1:driver
参数 2:t 是持续时间
参数 3:滑动次数 - 代码参考
#coding:utf-8
from appium import webdriver
from time import sleep
desired_caps = {
'platformName': 'Android',
'deviceName': '30d4e606',
'platformVersion': '4.4.2',
# apk 包名
'appPackage': 'com.taobao.taobao',
# apk 的 launcherActivity
'appActivity': 'com.taobao.tao.welcome.Welcome'
}
driver=webdriver.Remote('http://127.0.0.1:4723/wd/hub',
desired_caps)
def swipeUp(driver, t=500, n=1):
'''向上滑动屏幕'''
l = driver.get_window_size()
x1 = l['width'] * 0.5
# x 坐 标
y1 = l['height'] * 0.75
# 起始 y 坐标
y2 = l['height'] * 0.25
# 终点 y 坐标
for i in range(n):
driver.swipe(x1, y1, x1, y2, t)
def swipeDown(driver, t=500, n=1):
'''向下滑动屏幕'''
l = driver.get_window_size()
x1 = l['width'] * 0.5
# x 坐 标
y1 = l['height'] * 0.25
# 起 始 y 坐 标
y2 = l['height'] * 0.75
# 终 点 y 坐 标
for i in range(n):
driver.swipe(x1, y1, x1, y2,t)
def swipLeft(driver, t=500, n=1):
'''向左滑动屏幕'''
l = driver.get_window_size()
x1 = l['width'] * 0.75
y1 = l['height'] * 0.5
x2 = l['width'] * 0.05
for i in range(n):
driver.swipe(x1, y1, x2, y1, t)
def swipRight(driver, t=500, n=1):
'''向右滑动屏幕''' l = driver.get_window_size()
x1 = l['width'] * 0.05
y1 = l['height'] * 0.5
x2 = l['width'] * 0.75
for i in range(n):
driver.swipe(x1, y1, x2, y1, t)
ifname=="main":
print(driver.get_window_size())
sleep(5)
swipLeft(driver, n=2)
sleep(2)
swipRight(driver, n=2)
2.11 模拟手指点击(tap)
前言
有时候定位元素的时候,你使出了十八班武艺还是定位不到,怎么办呢?
这个问题面试经常会问,那就教大家一手绝活:点元素所在位置的坐标 (别经常使用哦)
2.11.1 tap 用法
1.tap 是模拟手指点击
一般页面上元素的语法有两个参数,第一个是 positions,另一个是duration
tap(self, positions, duration=None):
Taps on an particular place with up to five fingers, holding for a certain time
#模拟手指点击(最多五个手指),可设置按住时间长度(毫秒)
:参数:
- positions - list 类型
- #里面对象是元组,最多五个.
- #例如
- [(100, 20), (100, 60)]
- duration
- #持续时间,单位毫秒
- #例如
- 500
#:最终样子:
driver.tap([(100, 20), (100, 60), (100, 100)], 500)
2.11.2 坐标定位
1.如下图定位"去看看"这个按钮的坐标,可以看到右侧 bonds 属性: [374,831] [654,906]
2.点右上角"搜索"按钮,查看 bonds 属性:[615,52][690,146]
2.13.3 参考案例
# coding:utf-8
from appium import webdriver
from time import sleep
desired_caps = {
'platformName': 'Android',
'deviceName': '127.0.0.1:62001',
'platformVersion': '4.4.2',
'appPackage': 'com.baidu.yuedu',
'appActivity':
'com.baidu.yuedu.splash.SplashActivity'
}
driver=webdriver.Remote('http://127.0.0.1:4723/wd/hub', desired_caps)
sleep(5)
# 点弹出框去看看
driver.tap([(374, 831), (654, 906)], 500)
# 返回上一页
driver.back()
sleep(2)
# 点右上角搜索按钮 driver.tap([(615, 52), (690, 146)], 500)
通过坐标定位是元素定位的下下下策,实在没办法才用这个,一个是麻烦,一个是这种定位方法不常用
但有这样一个测试思维,说不定在紧急情况可以拿出来救火
最后
以上代码碰到问题的可以点击并输入暗号:CSDN截图好你的问题,群内会有不定时大佬出来回答的,需要一些自动化测试资料或者面试资料的也可以来看看