下载Appium与node.js、android-sdk
安装appnium的服务端 同时进行对环境变量的设置
安装appniumd的客户端 pycharm中进行setting中进行
安装node.js 并进行环境变量的设置
找到自己的sdk中的tools文件下的 uiautomator
from appium import webdriver
from appium.webdriver.common.touch_action import TouchAction
from time import sleep
# 设置手机参数
desired_caps = {}
desired_caps['platformName'] = 'Android'
desired_caps['platformVersion'] = '5.1'
desired_caps['deviceName'] = '192.168.43.166:5554'
desired_caps['appPackage'] = 'com.android.settings'
desired_caps['appActivity'] = '.Settings'
desired_caps['unicodeKeyboard'] = True
desired_caps['resetKeyboard'] = True
""":arg
手机参数对应指标
desired_caps常用参数:
platformName 平台的名称:iOS, Android, or FirefoxOS
platformVersion 设备系统版本号
deviceName 设备号 IOS:instruments -s devices,Android: adb devices
app 安装文件路径:/abs/path/to/my.apk or http://myapp.com/app
appActivity 启动的Activity
appPackage 启动的包
unicodeKeyboard unicode设置(允许中文输入)
resetKeyboard 键盘设置(允许中文输入)
"""
# 设置手机配置 写死的
driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub', desired_caps)
# 开始调用
# 从pc端往移动端安装apk文件 (apk文件路径)
# driver.install_app('F:\ce_shi\雷电模拟器\geeknews_qqtn.apk')
# 删除移动端应用 (包名)
# driver.remove_app('com.codeest.geeknews')
# 通过id定位
driver.find_element_by_id('com.android.settings:id/title').click()
# 点击返回按钮
# 通过class定位
driver.find_element_by_class_name('android.widget.ImageButton').click()
sleep(2)
# 通过text定位
driver.find_element_by_xpath('//*[contains(@text,"WLAN")]').click()
""":arg
swip滑动
方法:swipe(start_x, start_y, end_x, end_y, duration=None)
参数:
1.start_x:起点X轴坐标
2.start_y:起点Y轴坐标
3.end_x: 终点X轴坐标
4.end_y,: 终点Y轴坐标
5.duration: 滑动这个操作一共持续的时间长度,单位:ms
"""
driver.swipe(216, 1851, 216, 1635, 2000)
""":arg
方法:drag_and_drop(origin_el, destination_el)
参数:
1.origin_el:滑动开始的元素
2.destination_el:滑动结束的元素
"""
# drag拖拽事件
# WLAN定位
cunchu = driver.find_element_by_xpath("//*[contains(@text,'存储')]")
# 存储定位
wlan = driver.find_element_by_xpath("//*[contains(@text,'WLAN')]")
# scroll滑动事件
driver.drag_and_drop(cunchu, wlan)
""":arg
手指按操作
"""
wlan = driver.find_element_by_xpath("//*[contains(@text,'WLAN')]")
""":arg
# 通过元素定位方式按下屏幕
el = driver.find_element_by_xpath("//*[contains(@text,'WLAN')]")
TouchAction(driver).press(el).release().perform()
# 通过坐标方式按下屏幕,WLAN坐标:x=155,y=250
# TouchAction(driver).press(x=155,y=250).release().perform()
press定的位置 wait 等待时间 release 退出
"""
TouchAction(driver).press(wlan).wait(5).release().perform()
""":arg
long_press 长按操作
方法:long_press(el=None, x=None, y=None, duration=1000)
参数:
1.element:被定位到的元素
2.x:通常会使用元素的X轴坐标
3.y:通常会使用元素的Y轴坐标
4.duration:持续时间,默认为1000ms
"""
TouchAction(driver).long_press(wlan,duration=5000).release().perform()
""":arg
模拟手机的滑动操作
方法:move_to(el=None, x=None, y=None)
参数:
1.el:定位的元素
2.x:相对于前一个元素的X轴偏移量
3.y:相对于前一个元素的Y轴偏移量
通过坐标拉
wait 等待时间
"""
sleep(1)
driver.find_element_by_xpath("//*[contains(@text,'安全')]").click()
sleep(1)
driver.find_element_by_xpath("//*[contains(@text,'屏幕锁定方式')]").click()
sleep(2)
TouchAction(driver).press(x=180, y=1440).wait(1000).move_to(x=-2, y=-720).wait(1000).move_to(x=724, y=2). \
wait(1000).move_to(x=0, y=716).wait(1000).move_to(x=-322, y=0).wait(1000).move_to(x=0, y=-358).release().perform()
sleep(5)
#返回上一级
driver.back()
# 退出
driver.quit()