python+appium自动化测试

安装和配置

类型 内容 安装步骤 验证
android  jdk(java开发包)

1.找到8版本jdk下载并安装

2.并在系统变量中添加

JAVA_HOME:C:\Program Files\Java\jdk1.8.0_231(jdk安装路径)

CLASSPATH:.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;

path:%JAVA_HOME%\jre\bin(jre路径)和%JAVA_HOME%\bin(bin路径)

java -version

结果:出现版本信息

android sdk(软件开发包)

1.可以直接下载安装带sdk的android studio

2.file>setting>搜索框输入sdk查找sdk安装路径

3.添加系统变量

ANDROID_HOME:C:\Users\Rock\AppData\Local\Android\Sdk(sdk安装路径)

path:%ANDROID_HOME%\tools(tools路径)

%ANDROID_HOME%\platform-tools(platform-tools路径)

%ANDROID_HOME%\build-tools\29.0.3(build-tools路径)

解决adb不是内部或外部指令

cmd里输入adb和aapt

结果:出现命令行帮助信息

android studio(开发工具) 下载并安装  
genimotion(模拟器)

1.下载并安装genimotion

2..android打开设置(Ctrl+Alt+S)

3..找到Plugins选项并点击

4..在搜索栏输入enymotion,然后点击Search in repositories在线搜索

5.install

 
python python环境

1.下载地址:https://www.python.org/downloads/

2.安装时勾选add python 版本 to path

python

出现python版本信息

pycharm编辑器    
.NET framework

.NET framework3.5(包括.NET2.0和)

.NET framework4.8 Advanced Services

设置路径控制面板>程序>程序和功能>启用或关闭windows功能  
appium appium客户端

下载安装appium客户端

 
appium服务端 appium服务端:npm install -g appium --registry=https://registry.npm.taobao.org  
appium-doctror appium-doctror:npm install -g appium-doctor(安装后可以检查appium的环境配置情况)  
Appium-Python-Client 安装Appium-Python-Client:pip install Appium-Python-Client  

adb命令

作用 adb命令 结果
查看包名 adb shell dumpsys window windows | findstr mFocusedApp

mFocusedApp=AppWindowToken{52a313dc token=Token{5289c48c ActivityRecord{529ad31c u0 com.example.myapplication/.MainActivity t10}}}

包名:com.example.myapplication

界面名:.MainActivity

发送文件

adb push 文件路径 手机文件路径

adb push  D:\testing\1.txt /sdcard

模拟器的fileManiger可以查看文件目录

D:\testing\1.txt: 1 file pushed, 0 skipped. 0.0 MB/s (6 bytes in 0.157s)

/sdcard是所有设备都有的路径

传好后要在文件列表右下角展开按钮,然后refresh刷新

从手机中拉取文件

adb pull手机文件路径 电脑目录

adb pull /sdcard/1.txt D:/testing

/sdcard/1.txt: 1 file pulled, 0 skipped. 0.0 MB/s (6 bytes in 0.002s)
app启动时间 adb shell am start -W com.example.myapplication/.MainActivity

Starting: Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] cmp=com.example.myapplication/.MainActivity }
Warning: Activity not started, its current task has been brought to the front
Status: ok
Activity: com.example.myapplication/.MainActivity
ThisTime: 946
TotalTime: 946
Complete

946:0.946秒

thistimae:应用启动时间(系统+application)

totalTime:界面启动完成所需时间(系统+application+activity)

获取手机日志 adb logcat  
设备列表 adb devices  
adb重启 adb kill-server 和adb start-server  

python代码

类别 功能 代码 解释/例子
应用 启动其他app

driver.start_activity(appPackage,appActivity)

driver.start_activity('com.android.mms','com.android.setting')

appPackage:程序包名,

appActivity:程序界面名

获取包名 driver.current_package  
获取界面名 driver.current_activity  
关闭app driver.close_app()  
关闭驱动对象 driver.quil()  
安装app driver.install_app(app_path)  
卸载app driver.remove_app(app_id)  
判断是否安装app

driver.is_install_app(app_id)

driver.is_install_app(“cn.goapk.market”)

返回布尔值

将应用置于后台 driver.background_app(second) 后台停留多少秒,在后台待多少秒再回到原界面
定位 定位元素一个元素

//class

driver.find_element_by_id(id_value)

//id

driver.find_element_by_class_name(class_value)

//xpath

driver.find_element_by_xpath(xpath_value)

element

id_value的值是resource-id的字符串形式,它可以在uiautomatorviewer里查看

class_value可以在uiautomatorviewer里查看

找不到元素会报错

定位一组元素

//class

driver.find_elements_by_id(id_value)

//id

driver.find_elements_by_class_name(class_value)

//xpath

driver.find_elements_by_xpath(xpath_value)

elements

找不到元素会返回空列表

元素等待 隐式等待    
显示等待    

python+appium案例

1.使用appium打开模拟器中软件(前置代码)

from appium import webdriver
import time

desired_caps = dict()
//手机参数:设备类型,模拟器(手机)版本,设备号(随便写)
desired_caps['platformName'] = 'Android'
desired_caps['platformVersion'] = '4.4'
desired_caps['deviceName'] = '192.168.56.101:5555'
//应用参数:程序包名,界面
desired_caps['appPackage'] = 'com.android.settings'
desired_caps['appActivity'] = '.Settings'
//连接appium,获取driver
driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub', desired_caps)

time.sleep(5)

driver.quit()

2.查找元素

  • 步骤一:uiautomatorviewer查找元素

C:\Users\Rock\AppData\Local\Android\Sdk\tools\bin下打开uiautomatorviewer.bat

uiautomatorviewer运行不正常原因

点击uiautomatorviewer菜单栏第二个按钮报错:原因是appium正在用adb,解决方法:先在cmd关闭adb再开adb

uiautomatorviewer闪退原因jdk版本不是8

  • 步骤二:在前置基础上添加代码
# 通过id查找一个元素
fun1 = driver.find_element_by_id("com.android.settings:id/switchWidget")
fun1.click()
# 通过class查找一个元素
fun1 = driver.find_element_by_class_name("")
# 通过xpath查找一个元素
fun1 = driver.find_element_by_xpath("")

# 通过id查找一组元素
fun1 = driver.find_elements_by_id("com.android.settings:id/switchWidget")
fun1[1].click()
# 通过class查找一组元素
fun1 = driver.find_elements_by_class_name("android.widget.TextView")
for tex1 in fun1:
    print(tex1.text)
# 通过xpath查找一组元素
fun1 = driver.find_elements_by_xpath("")

3.等待

time.sleep:直接睡眠模式,停止运行指定秒数

隐式等待:在等待时间后,如果出现了要查找的元素再进行后续操作,如果没有出现则报错(元素在指定时间内要出现)

显式等待:每隔多少秒后再进行操作,超出时长报错

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章