关于App的自动化测试(二)

一、APP元素事件操作

1、swip滑动事件

⚠️从一个坐标位置滑动到另一个坐标位置,只能是两个点之间的滑动
  方法:swipe(start_x, start_y, end_x, end_y, duration=None)
  参数:
      a.start_x:起点X轴坐标
      b.start_y:起点Y轴坐标
      c.end_x:  终点X轴坐标
      d.end_y,: 终点Y轴坐标
      e.duration: 滑动这个操作一共持续的时间长度,单位:ms

业务场景:
      1.进入设置
      2.从坐标(421,292)滑动到坐标(763,1847 )

代码:

from appium import webdriver
from appium.webdriver.common.touch_action import TouchAction
import time

from selenium.webdriver.support.wait import WebDriverWait  # 导入WebDriverWait类
caps = {}
caps["platformName"] = "Android"
caps["platformVersion"] = "5.1.1"
caps["deviceName"] = "HUAWEI_MLA_AL10"
caps["appPackage"] = "com.android.settings"
caps["appActivity"] = "com.android.settings.Settings"

driver = webdriver.Remote("http://localhost:4723/wd/hub", caps)

#WLAN
wlan = driver.find_element_by_xpath("//*[contains(@text,'WLAN')]")
# #应用
yy = driver.find_element_by_xpath("//*[contains(@text,'应用')]")
driver.swipe(89,1443,189,298,5000)

2、scroll滑动事件

 ⚠️ 从一个元素滑动到另一个元素,直到页面自动停止
  方法:scroll(origin_el, destination_el)
  参数:
     a.origin_el:滑动开始的元素
      b.destination_el:滑动结束的元素
业务场景:
      a.进入设置页
      b.模拟手指从存储菜单位置 到 WLAN菜单位置的上滑操作

代码:

from appium import webdriver
from appium.webdriver.common.touch_action import TouchAction
import time

from selenium.webdriver.support.wait import WebDriverWait  # 导入WebDriverWait类
caps = {}
caps["platformName"] = "Android"
caps["platformVersion"] = "5.1.1"
caps["deviceName"] = "HUAWEI_MLA_AL10"
caps["appPackage"] = "com.android.settings"
caps["appActivity"] = "com.android.settings.Settings"

driver = webdriver.Remote("http://localhost:4723/wd/hub", caps)

#WLAN
wlan = driver.find_element_by_xpath("//*[contains(@text,'WLAN')]")
# #应用
yy = driver.find_element_by_xpath("//*[contains(@text,'应用')]")
# driver.swipe(189,1443,189,298,5000)
driver.scroll(yy,wlan)
time.sleep(2)2、

二、APP模拟手势高级操作

 TouchAction是AppiumDriver的辅助类,主要针对手势操作,比如滑动、长按、拖动等,
    原理是将一系列的动作放在一个链条中发送到服务器,服务器接受到该链条后,解析各个动作,逐个执行。

1、手指轻敲操作

模拟手指轻敲一下屏幕操作
  方法:tap(element=None, x=None, y=None)
  方法:perform() # 发送命令到服务器执行操作
  参数:
      a.element:被定位到的元素
      b.x:相对于元素左上角的坐标,通常会使用元素的X轴坐标
      c.y:通常会使用元素的Y轴坐标

业务场景:
      a.进入设置
      b.点击WLAN选项

代码:

from appium import webdriver
from appium.webdriver.common.touch_action import TouchAction
import time

from selenium.webdriver.support.wait import WebDriverWait  # 导入WebDriverWait类
caps = {}
caps["platformName"] = "Android"
caps["platformVersion"] = "5.1.1"
caps["deviceName"] = "HUAWEI_MLA_AL10"
caps["appPackage"] = "com.android.settings"
caps["appActivity"] = "com.android.settings.Settings"

driver = webdriver.Remote("http://localhost:4723/wd/hub", caps)

# 通过元素定位方式敲击屏幕
el = driver.find_element_by_xpath("//*[contains(@text,'WLAN')]")
TouchAction(driver).tap(el).perform()
time.sleep(2)

代码:

from appium import webdriver
from appium.webdriver.common.touch_action import TouchAction
import time

from selenium.webdriver.support.wait import WebDriverWait  # 导入WebDriverWait类
caps = {}
caps["platformName"] = "Android"
caps["platformVersion"] = "5.1.1"
caps["deviceName"] = "HUAWEI_MLA_AL10"
caps["appPackage"] = "com.android.settings"
caps["appActivity"] = "com.android.settings.Settings"

driver = webdriver.Remote("http://localhost:4723/wd/hub", caps)

# 通过元素定位方式敲击屏幕
TouchAction(driver).tap(x=1025,y=103).perform()
time.sleep(2)

 

结果:

 

 

 

 

2、手指移动操作

模拟手机的滑动操作
  方法:move_to(el=None, x=None, y=None)
  参数:
      a.el:定位的元素
      b.x:相对于前一个元素的X轴偏移量
      c.y:相对于前一个元素的Y轴偏移量

 业务场景:
        a.进入设置
        b.向上滑动屏幕到可见"安全"选项
        c.进入到安全
        d.点击屏幕锁定方式
       e.点击图案
        f.绘制图案

代码:

from appium import webdriver
import time
from appium.webdriver.common.touch_action import TouchAction
caps = {}
caps["platformName"] = "Android"
caps["platformVersion"] = "5.1.1"
caps["deviceName"] = "HUAWEI_MLA_AL10"
caps["appPackage"] = "com.android.settings"
caps["appActivity"] = "com.android.settings.Settings"

driver = webdriver.Remote("http://localhost:4723/wd/hub", caps)
#WLAN
wlan = driver.find_element_by_xpath("//*[contains(@text,'WLAN')]")
#应用
yy = driver.find_element_by_xpath("//*[contains(@text,'应用')]")
driver.scroll(yy,wlan,duration=1000)
aq = driver.find_element_by_xpath("//*[contains(@text,'安全')]")
aq.click()
time.sleep(1)

#屏幕锁定方式
pmsdfs = driver.find_element_by_xpath("//*[contains(@text,'屏幕锁定方式')]")
pmsdfs.click()
time.sleep(1)

# 点击图案按钮
driver.find_element_by_xpath("//*[contains(@text,'图案')]").click()
time.sleep(1)
# 绘制图案四个坐标 1:(166,627) 2:(528,615) 3:(173,977) 4:(532,1340)
TouchAction(driver).press(x=166, y=627).wait(100).move_to(x=528, y=615).wait(100) \
    .move_to(x=173, y=977).wait(100).move_to(x=532, y=1340).release().perform()

time.sleep(1)

 

结果:

 

 

 

 

 

 

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值