自动化软件测试 -- Appium 手势操作

一、滚动

swipe(self,start_x:int,start_y:int,end_x:int,end_y:int,duration:int = 0)

scroll(origin_el,destination_el,duration)

duration 默认是600毫秒

from appium import webdriver
import time
#server 启动参数
desired_caps={}
desired_caps['platformName'] = 'Android'
desired_caps['platformVersion'] = '7.1'
desired_caps['deviceName'] = '127.0.0.1:62001'
desired_caps['appPackage'] = 'com.android.settings'
desired_caps['appActivity'] = '.Settings'
#从appium库里导入driver对象
driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub',desired_capabilities=desired_caps)
time.sleep(1)
#获取当前屏幕的分辨率
size = driver.get_window_size()
print(size)
width = size["width"]
height = size["height"]
#方法一:
driver.swipe(start_x=width/2,start_y=height/3*2,end_x=width/2,end_y=height/3)
time.sleep(2)
#方法二:
el1 = driver.find_element_by_xpath("//*[@text = '通知']")
el2 = driver.find_element_by_xpath("//*[@text = 'WLAN']")
driver.scroll(el1,el2)
#关闭APP
driver.close_app()
#释放资源
driver.quit()

二、拖拽

drag_and_drop(origin_el,destination_el)

#从appium库里导入driver对象
driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub',desired_capabilities=desired_caps)
time.sleep(1)

el1 = driver.find_element_by_xpath("//*[@text='酷安']")
el2 = driver.find_element_by_xpath("//*[@text='淘宝']")

driver.drag_and_drop(el1,el2)
time.sleep(2)

三、高级模拟手势功能

TouchAction

按下:press(self,el,x,y,pressure)

如果传递了el参数,x,y可以不传

如果el为None,就需要传递x,y

移动:move_to(self,el,x,y)

等待:wait(self,ms)

松手:release()

轻敲(点击):tap(self,element,x,y,count = 1) 

tap 和 click 的区别:click有延迟触发效果(为了检验是不是双击)

通过tap(el,count = 2)可以模拟双击

from appium import webdriver
import time
from appium.webdriver.common.touch_action import TouchAction
#server 启动参数
desired_caps={}
desired_caps['platformName'] = 'Android'
desired_caps['platformVersion'] = '7.1'
desired_caps['deviceName'] = '127.0.0.1:62001'
desired_caps['appPackage'] = 'com.android.settings'
desired_caps['appActivity'] = '.Settings'
#从appium库里导入driver对象
driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub',desired_capabilities=desired_caps)
time.sleep(1)
el1 = driver.find_element_by_xpath("//*[@text='通知']")
el2 = driver.find_element_by_xpath("//*[@text='WLAN']")


#实例化TouchAction
action = TouchAction(driver)
action.press(el1).wait(500).move_to(el2)    #在移动的过程中,wait是必不可少的
action.release()

#执行 使用TouchAction进行模拟手势的时候,一定要记得执行操作
action.perform()
time.sleep(3)
#关闭APP
driver.close_app()
#释放资源
driver.quit()

四、案例 -- 设置图形密码

from appium import webdriver
import time
from appium.webdriver.common.touch_action import TouchAction
#server 启动参数
desired_caps={}
desired_caps['platformName'] = 'Android'
desired_caps['platformVersion'] = '7.1'
desired_caps['deviceName'] = '127.0.0.1:62001'
desired_caps['appPackage'] = 'com.android.settings'
desired_caps['appActivity'] = '.Settings'
#从appium库里导入driver对象
driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub',desired_capabilities=desired_caps)
time.sleep(1)

#1、进入设置页面进行滑动,让“安全”项出现在屏幕里
el1 = driver.find_element_by_xpath("//*[@text='声音']")
el2 = driver.find_element_by_xpath("//*[@text='WLAN']")

action = TouchAction(driver)
action.press(el1).wait(500).move_to(el2)
action.release()
#需要执行上面的操作
action.perform()
time.sleep(1)

#2、点击“安全”项,进入后点击“屏幕锁定”项
driver.find_element_by_xpath("//*[@text='安全']").click()
time.sleep(1)
driver.find_element_by_xpath("//*[@text='屏幕锁定']").click()
time.sleep(1)
driver.find_element_by_xpath("//*[@text='图案']").click()
time.sleep(1)

#3、开始绘制图案
#最开始按下的位置为(105,450),移动坐标为x=165,y=165
action.press(x=105,y=450).wait(200).move_to(x=270,y=450).wait(200).move_to(x=435,y=450).wait(200).move_to(x=270,y=615)\
    .wait(200).move_to(x=105,y=780).wait(200).move_to(x=270,y=780).wait(200).move_to(x=435,y=780)
action.release()
time.sleep(1)

action.perform()
#关闭APP
driver.close_app()
#释放资源
driver.quit()

 五、driver的其他操作

.device_time 获取手机时间

.get_window_size() 获取屏幕大小

.network_connection 获取手机网络信息

.set_network_connection(网络模式数字) 设置手机网络信息

.keyevent(按键数字) 点击按键

get_screenshot_as_file/save_screenshot(图片路径) 截屏

.open_notifications() 打开通知栏

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值