python+appium自动化测试

1 篇文章 0 订阅
1 篇文章 0 订阅

安装和配置

类型内容安装步骤验证
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

 
pythonpython环境

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功能 
appiumappium客户端

下载安装appium客户端

 
appium服务端appium服务端:npm install -g appium --registry=https://registry.npm.taobao.org 
appium-doctrorappium-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 
关闭appdriver.close_app() 
关闭驱动对象driver.quil() 
安装appdriver.install_app(app_path) 
卸载appdriver.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:直接睡眠模式,停止运行指定秒数

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

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

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值