一、滚动
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() 打开通知栏