一.Appium介绍
1.官网:www.appium.io
2.Appium是由node.js的express框架写的HTTP Server,Appium使用WebDriver的json wire协议,来驱动Apple系统的UIAutomation库,Android系统的UIAutomator框架
3.运行第一个脚本
from appium import webdriver
import time
caps={}
caps['platformName']='Android' #平台名称
caps['platformVersion']='5.1.1' #设备的系统版本号
caps['deviceName']='127.0.0.1:62001' #设备名称(可以随意写,取adb devices中第一台设备)
caps['appPackage']='com.android.settings' #包名
caps['appActivity']='.Settings' # activity
driver=webdriver.Remote('http://127.0.0.1:4723/wd/hub',caps)
time.sleep(5)
driver.quit()
4.Appium工作原理
二.Appium参数介绍
三.Appium Desktop界面介绍
默认ip 0.0.0.0 监听所有信息
1.启动Appium
2.Capability
配置Appium会话,是一组设置的键值对的集合,其中键对应用设置的名称,值对应设置的值
录制 并进行操作,选择语言
代码转换,复制到粘贴板
获取当前屏幕信息
from appium import webdriver
caps = {}
caps["platformName"] = "Android"
caps["platformVersion"] = "5.1.1"
caps["deviceName"] = "127.0.0.1:62001"
caps["appPackage"] = "com.android.settings"
caps["appActivity"] = ".Settings"
driver=webdriver.Remote('http://127.0.0.1:4723/wd/hub',caps)
# driver.find_element_by_id('com.android.settings:id/title').click()
# driver.find_element_by_class_name('android.widget.TextView').click()
# 定位一组同样classname的元素
ele_list=driver.find_elements_by_class_name('android.widget.TextView')
# print(ele_list)
# print(len(ele_list))
#
for i in ele_list:
# print(i.text)#只获取当前屏的信息
if i.text=='WLAN':
i.click()
break
安装本地应用
from appium import webdriver
import time
caps = {}
caps["platformName"] = "Android"
caps["platformVersion"] = "5.1.1"
caps["deviceName"] = "127.0.0.1:62001"
caps["appPackage"] = "com.android.settings"
caps["appActivity"] = ".Settings"
driver=webdriver.Remote('http://127.0.0.1:4723/wd/hub',caps)
#关闭当前操作的app
# driver.close_app()
#安装应用
# driver.install_app(r'D:\python_projects\05期接口自动化\test.apk')
# time.sleep(5)
#卸载应用
# driver.remove_app('com.youba.calculate')
# 判断是否安装了应用,返回 True 或 False
is_installed=driver.is_app_installed('com.youba.calculate')
# 判断计算器是否安装在手机上。如果安装了 不做处理,如果没安装 安装计算器到手机
if not is_installed:
driver.install_app(r'D:\python_projects\05期接口自动化\test.apk')
# 脚本内启动其他app
driver.start_activity('com.youba.calculate','.MainActivity')
# 需要加等待时间再进行定位,否则可能会定位失败
time.sleep(3)
driver.find_element_by_id('com.youba.calculate:id/btn_one').click()
# driver.quit()
四.uiautomatorviewer的使用方法
所在目录
导入UI和XML、刷新按钮、第三个几乎不用、导出UI和XML
from appium import webdriver
import time
caps = {}
caps["platformName"] = "Android"
caps["platformVersion"] = "5.1.1"
caps["deviceName"] = "127.0.0.1:62001"
caps["appPackage"] = "com.youba.calculate"
caps["appActivity"] = ".MainActivity"
driver=webdriver.Remote('http://127.0.0.1:4723/wd/hub',caps)
# uiautomatorviewer中获取元素的ID
driver.find_element_by_id('com.youba.calculate:id/btn_one').click() #点击 1
driver.find_element_by_id('com.youba.calculate:id/btn_plus').click() #点击 +
driver.find_element_by_id('com.youba.calculate:id/btn_two').click() #点击 2
driver.find_element_by_id('com.youba.calculate:id/btn_equal').click() #点击 =
# 获取结果文本
res_text=driver.find_element_by_id('com.youba.calculate:id/tv_display').text
# 断言,计算结果是否正确
assert res_text == '3'
获取包名和activity
方法一
1.将准备测试的APK放到D盘某个目录,如D:\test
2.打开cmd,输入指令aapt dump badging D:\test\xxx.apk(APK的全名,如手机淘宝.apk)
3.以手机淘宝.apk为例,如下图
方法二
adb shell pm list package -f #将获取手机内所有 apk 对应的包名和路径
adb shell pm list package -3 -f #获取第三方 apk 的包
adb shell dumpsys window w | findstr \/ | findstr name= #切换到应用的任意界面
adb shell dumpsys window |findstr mCurrent #切换到应用的任意界面
方法三
adb shell
logcat | grep START
先启动需要查找的 apk, 再敲入以上命令, 找到最后一个 ActivityManager