【appium】appium自动化入门之UI界面

每日更新(大概吧
这次谈谈有关界面点击方面的代码应该如何编写,本节代码方面比较多,可以拿去作为模板复制粘贴(手动狗头)

欢迎大家点击并输入暗号:CSDN来催更,和接待小姐姐说一下催更,就能更多爆更哦~~

书接上文:【appium】appium自动化入门之元素篇
API篇:【appium】appium自动化入门之API(上)
环境搭建篇:【appium】appium自动化入门之环境搭建(上)

正文

2.10 滑动屏幕

2.10.1 swipe 介绍

  1. 查看源码语法,起点和终点四个坐标参数,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)
  1. 值得注意的是,手机从左上角开始为 0点,横着的是 x 轴,竖着的是 y 轴
    在这里插入图片描述

2.10.2 获取坐标

  1. 由于每个手机屏幕的分辨率不一样,所以同一个元素在不同手机上的坐标也是 不一样的,滑动的时候坐标不能写死了

要先获取屏幕的宽和高,再通过比例去 计算。

# 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']) 
  1. 运行结果:
    例如:{u’width’: 720, u’height’: 1280}
    宽:720
    高:1280

2.10.3 封装滑动方法

  1. 把上下左右四种常用的滑动方法封装,这样以后想滑动屏幕时候就能直接调用 了
    参数 1:driver
    参数 2:t 是持续时间
    参数 3:滑动次数
  2. 代码参考
#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截图好你的问题,群内会有不定时大佬出来回答的,需要一些自动化测试资料或者面试资料的也可以来看看在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/Chaqian/article/details/109310493