欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Appium移动UI自动化测试--Helloworld

程序员文章站 2022-04-01 18:48:11
需要的安装包括:Andriod_SDK.zip、appium-1.10.0.zip、ldinst_3.96.0.exe、python-3.6.4.exe、Appium-Python-Client-0.26.tar.gz一、安装SDK提供的Andriod_SDK.zip是一个已经配置的绿色文件包,解压即可使用1.解压sdk如图2.配置SDK环境变量新建一个环境变量,变量名:ANDROID_HOME,变量值:F:\Andriod_SDK(以你安装目录 为准,确认里面有tool....

 

《Appium移动UI自动化测试--Helloworld》基础

需要的安装包括:

Andriod_SDK.zip、appium-1.10.0.zip、ldinst_3.96.0.exe、python-3.6.4.exe、Appium-Python-Client-0.26.tar.gz

一、安装SDK

提供的Andriod_SDK.zip是一个已经配置的绿色文件包,解压即可使用

1.解压sdk如图

Appium移动UI自动化测试--Helloworld

 

2.配置SDK环境变量

新建一个环境变量,变量名:ANDROID_HOME,变量值:F:\Andriod_SDK(以你安装目录 为准,确认里面有toolsadd-ons等多个文件夹),点击确认。

Appium移动UI自动化测试--Helloworld

在系统变量path 中添加以下内容:

;%ANDROID_HOME%\platform-tools; %ANDROID_HOME%\tools

 

Appium移动UI自动化测试--Helloworld

3.Android SDK配置完成,接下来验证配置是否成功

点击运行——输入cmd——回车——输入adb——回车,出现英文命令或者没报错提示即正确

Appium移动UI自动化测试--Helloworld


二、安装appium服务器

 

提供的appium-1.10.0.zip是一个已经配置的绿色文件包,解压即可使用

1.解压appium如图:

Appium移动UI自动化测试--Helloworld

 

2.创建桌面快捷方式

Appium移动UI自动化测试--Helloworld

 

3.打开并启动服务

注意选择:Allow Session Override

Appium移动UI自动化测试--Helloworld

Appium移动UI自动化测试--Helloworld

4.启动Inspector,查找UI元素

在:Desired Capabilities中,添加如下JSON的配置

{
  "platformName": "Android",
  "deviceName": "127.0.0.1:5555",
  "platforVersion": "5.1.1",
  "appPackage": "com.android.contacts",
  "appActivity": ".activities.PeopleActivity"
}

Appium移动UI自动化测试--Helloworld

Appium移动UI自动化测试--Helloworld

Appium移动UI自动化测试--Helloworld

Appium移动UI自动化测试--Helloworld

三、安装雷电模拟器

  1. 双击ldinst_3.96.0.exe进行安装至完成
  2. 设置雷电模拟器的分辨率,重启模拟器

Appium移动UI自动化测试--Helloworld

 

3.PC端连接上模拟器

连接:

adb connect 127.0.0.1:5555

查看:

adb devices

Appium移动UI自动化测试--Helloworld

 

四、安装python3.X及ide工具:pycharm

1. 安装python-3.6.4.exe

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

一路安装软件,

把python的bin加入到PATH中

D:\devtools\Python36\Scripts\
D:\devtools\Python36\

Appium移动UI自动化测试--Helloworld

2. 安装pip

参考地址:https://www.runoob.com/w3cnote/python-pip-install-usage.html

pip 是 Python 包管理工具,该工具提供了对Python 包的查找、下载、安装、卸载的功能。

目前如果你在 python.org 下载最新版本的安装包,则是已经自带了该工具。

Python 2.7.9 + 或 Python 3.4+ 以上版本都自带 pip 工具。

pip 最常用命令

显示版本和路径

pip --version
获取帮助

pip --help
升级 pip

pip install -U pip
如果这个升级命令出现问题 ,可以使用以下命令:

sudo easy_install --upgrade pip
安装包

pip install SomePackage              # 最新版本
pip install SomePackage==1.0.4       # 指定版本
pip install 'SomePackage>=1.0.4'     # 最小版本
比如我要安装 Django。用以下的一条命令就可以,方便快捷。

pip install Django==1.7
升级包

pip install --upgrade SomePackage
升级指定的包,通过使用==, >=, <=, >, < 来指定一个版本号。

卸载包

pip uninstall SomePackage
搜索包

pip search SomePackage
显示安装包信息

pip show 
查看指定包的详细信息

pip show -f SomePackage
列出已安装的包

pip list
查看可升级的包

pip list -o
pip 升级
Linux 或 macOS

 
pip install --upgrade pip    # python2.x
pip3 install --upgrade pip   # python3.x
Windows 平台升级:

python -m pip install -U pip   # python2.x
python -m pip3 install -U pip    # python3.x

 

五、安装appium库

  1. 安装完成后在按键Win+R输入cmd打开Windows 命令提示符,输入命令:
pip install Appium-Python-Client 
  1. 安装后可以通过pycharm执行如下命令来检测是否安装成功
from appium import webdriver

Appium移动UI自动化测试--Helloworld

六、环境完成搭建

1.检查PC是否连接模拟器:

adb devices

2.检查appium服务器是否已经打开并启动

3.pycharm执行以下代码,观看模拟器是否自动启动通讯录

from  appium import webdriver

desired_caps={}

desired_caps['platformName']='Android'

desired_caps['deviceName']='127.0.0.1:5555

desired_caps['platforVersion']='5.1.1'

desired_caps['appPackage']='com.android.contacts'

desired_caps['appActivity']='.activities.PeopleActivity'

driver=webdriver.Remote('http://localhost:4723/wd/hub',desired_caps)

Appium移动UI自动化测试--Helloworld

 

 

基于:
    系统: win10 64
  Appium: AppiumForWindows_1_4_16_1
    脚本: python 3.5

参考:腾讯Android自动化测试实践

 

安装:

网上文章应该蛮多的,据说安装比较复杂,我因为之前开发的时候安装过androidSDK,python,node,framework4.5等等,所以一路都还挺顺利,安装过程:
1. 在系统环境变量中配置 ANDROID_HOME 变量
2. 安装python并添加到path环境变量中
3. 安装node(非必需)
4. 下载appium 并安装,推荐1.4.0以后的版本
5. 安装appium客户端:

pip install robotframework-appiumlibrary

在开始菜单中点击运行appium服务器

脚本编写

  1. 设置默认编码
# -*- codeing: utf-8 -*-
# 这个最好还是养成习惯,之前使用monkeyRunner的时候就是没设置utf-8,运行的时候连注释中的中文都报错
# 导入所需包
import sys,os,unittest
from time import sleep
from appium import webdriver

 

  1. 设置desired capabilities键值对,主要用于通知 Appium 服务器建立需要的session
'''
python 3.5
测试机型: 红米1s android 4.4.4 
直接运行脚本即可
'''
desire_caps = {}
desire_caps['platformName'] = 'Android'
desire_caps['platformVersion'] =  '4.4.4'
desire_caps['appPackage'] ='com.android.contacts' 
desire_caps['appActivity'] = '.activities.PeopleActivity'
# 手机名称,这个可以通过命令行adb devices即可获取,我发现在连接多台手机时会有影响
desire_caps['deviceName'] = '9de1f8c7'
# 以下两项主要是在点击输入框的时候,会触发系统输入法,导致可能我们发送的是字符 `234`,但是九宫格中文输入法有可能给出的是 `bei` ,这两个属性就是屏蔽系统输入法,使用appium自己的,但是测试完成后,得自己去系统设置中将输入法切换过来
desire_caps['unicodeKeyboard'] = True
desire_caps['resetKeyboard'] =  True
  1. 连接appium
# ip地址在pc上的 appium客户端-设置 中可以看到 `server address` 和 `port`,保持一致即可
driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub',desire_caps)
  •  
  • 控件操作
# 通过id查找控件
# 具体的控件id可以通过 `AndroidSDK\tools\uiautomatorviewer.bat` 来直接获取
createContactBtn = driver.find_element_by_id('com.android.contacts:id/fab')
# 模拟点击操作
createContactBtn.click()
# 也可以通过文本查找控件,并输入姓名
name = driver.find_element_by_name(u"姓名") # "姓名" 是输入框的hint值
name.click()
name.send_keys("阿冏Lynxz") # 输入指定的文本,注意这里需要上面desire_caps屏蔽系统输入法才行
# 也可以查找多个控件
# 比如通讯录可能有多个电话号码输入框 `elements` 多了个s
phone = driver.find_elements_by_name(u"电话")
phone[0].click()
phone[0].send_keys("189***0620")
# 判断结果是否符合预期,不通过的话会在这里中断并打印日志
# self.assertEqual(phone[0].text,"15390")
# 截屏,会在当前目录保存指定文件名的图片
driver.save_screenshot("after_input.png")
# 等待,单位:秒
sleep(5)
# 测试完成,退出
driver.quit()

控件属性/操作方法:

* text 控件显示的文本信息,如 edt.text,有点类似于属性获取
* click() 模拟控件点击操作,如btn.click
* clear() 清除控件的文本
* is_enabled() 判断控件是否可用
* is_selected() 控件是否被选中
* is_displayed() 控件是否显示
* get_attribute(self,name) 指定属性名称,返回属性值,若属性名不存在,则返回none
* send_keys(self,*value) 模拟输入文本到控件

系统API

* current_activity 获取当前activity信息,可以直接打印,如 print(driver.current_activity)
* current_context \ context 我在真机上测试的时候都是返回 NATIVE_APP
* install_app(self,app_path) 安装应用app
* is_app_installed(self,bundle_id) 在android中传入包名即可
* get_screenshot_as_file(self,filename) 传入要保存的路径和文件名,可以使用相对路径
* save_screenshot(self,filename) 跟上一条的功能类似
* network_connection 查看当前网络信息,整数值, ==!测试出来都是

 

Appium移动UI自动化测试--Helloworld

 

碰到的问题:

1. Could not extract PIDs from ps output…

selenium.common.exceptions.WebDriverException: Message: A new session could not be created. (Original error: Could not extract PIDs from ps output. PIDS: [], Procs: ["bad pid 'uiautomator'"])
  •  

修改 Appium\node_modules\appium\node_modules\appium-adb\lib\adb.js 文件

this.shell("ps '" + name + "'", function (err, stdout) {
    ...
    var procs = [];
    var outlines = stdout.split("\n");
    outlines.shift() //添加这行
    ...

保存后,重新运行appium即可

2. 500 Internal Privoxy Error

好吧,这个是我电脑上开着 *,虽然是pac模式,但是appium就是会报错,关闭就好了

3. 使用 send_keys() 时会触发输入法,导致输入异常,中文无法输入

Python Appium实现中文输入分享
解决方法: 在 desire caps 参数中添加如下两个字段:

desire_caps = {}
...
desire_caps['unicodeKeyboard'] = True # 使用unicodeKeyboard的编码方式来发送字符串
desire_caps['resetKeyboard'] =  True # 将键盘给隐藏起来

当然,这样测试结束后,发现自己输入法调用不出来,可以到系统设置中切换一些输入法(此时,默认调用的是Appium Android Input manager...)

 

优点:

  1. 支持多种应用程序测试: Native app(ios/android), hybrid app 和 web app
  2. 不需要被测应用做特殊修改:不需要引入任何额外的测试sdk,不需要添加其他权限,不需要修改签名等…(不过我安装的时候发现会安装两个小程序,影响不大)
  3. 对测试脚本的语言不做限制(比较喜欢这样的跨平台跨语言的,迁移方便)
  4. 支持应用间交互测试

缺点

就是运行有点慢啊…
好像没看到直接截图对比功能,不过可以考虑使用现成的monkeyRunner的,没测试过…

 

 

本文地址:https://blog.csdn.net/yuhaibao324/article/details/108041671