APP——python——自动化环境搭建02——个人详细搭建
前提摘要——个人已经安装好python和pycharm
安装:pip install Appium-Python-Client
=========================================================================================================================
第一步骤:按装JDK1.8
系统默认安装路径如下:C:\Program Files\Java\jdk1.8.0_101
新建 JAVA_HOME 变量
点击新建,在弹出框中变量值填写jdk安装的根目录(即上面记录下来的 C:\Program Files\Java\jdk1.8.0_101 ),如下图示:
在系统变量找到Path 变量,点击【新建】,增加两行配置
%JAVA_HOME%\bin
%JAVA_HOME%\jre\bin
===========================================================================================================
第二步骤:安装配置Android SDK
下载Android SDK
默认官方网址由于不可描述的原因不能访问:
http://developer.android.com/sdk/index.html
所以给大家推荐国内下载SDK的网址:
http://www.android-studio.org/
要注意选择ADT进行下载,为什么要选择这个呢?
因为选择SDK进行下载的话,它只包含有基本的SDK工具,后面还需要自己手动通过AVD manager来下载对应的软件包,
所以建议初学者就下载ADT,这个已经包含android app自动化所需的相关SDK工具,不需要另外下载了,省事。
配置Android SDK环境变量
解压完成后进入到对应的adt-bundle-windows-x86_64-20140702\sdk\platform-tools目录,
这个目录有存放appium自动化所需要的相关组件和工具,所以接下来我们需要来将这个目录配置到系统环境变量中,方便全局使用。
进入到系统环境变量设置中->新建ANDROID_HOME,变量值为你的SDK对应的目录,
比如我的ADT软件包解压之后是在D盘,那么SDK对应的目录就是:C:\Users\del\Desktop\a\ADT\adt\adt\sdk
接下来我们就需要把SDK对应的platform-tools目录以及tools配置到系统变量Path里面去:Path里面点击【新建->增加
%ANDROID_HOME%\platform-tools
以及
%ANDROID_HOME%\tools 】
系统的cmd窗口输入adb version来检测是否安装成功,如果有下面的信息显示成功的话,那么SDK配置就OK了。
==================================================================================================
第三步骤:安装Appium-desktop
有一点大家要注意,下载的时候Appium有两个不同的版本类型,Appium-desktop以及Appium-server,这两者有什么区别呢?
Appium-server是最先出来的,他的下载地址:https://bitbucket.org/appium/appium.app/downloads/,但是很久没有更新了
Appium-desktop是Appium的桌面版本,它封装了运行 Appium服务端的所有依赖,而且不需要担心怎样安装Node.js。
所以强烈建议大家选择Appium-desktop进行安装,并且安装也非常的容易。
Appium-desktop是GitHub上面的开源项目,代码地址是:https://github.com/appium/appium-desktop
对应安装包下载地址:https://github.com/appium/appium-desktop/releases
进入到安装包的下载地址,下载Appium-desktop的对应版本安装包(这里建议不要用最新的,可能会存在一些BUG),
这里以V1.14.0为例:展开Assets选项,选择windows平台的安装包
=========================================================================================================
第四步骤: 我这里没有使用模拟器,以真机进行测试
真机处于开发者模式下:
机器名称:8DF6R17503000072
如何获取包名和启动Main Activity值
首先打开要操作的app ,然后在dos窗口输入如下命令: adb shell dumpsys window w |findstr \/ |findstr name=
C:\Users\del>adb shell dumpsys window w |findstr \/ |findstr name=
mSurface = Surface(name=com.android.calculator2/com.android.calculator2.Calculator)
C:\Users\del>
包名:com.android.calculator2
Main Activity:com.android.calculator2.Calculator
注意:执行此命令的时候 ,需要打开被测试的app主界面(进入界面)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
(1)、双击打开appium;
(2)、设置并执行python脚本;
(3)、系统开始运行后,会自动在手机端安卓appium-setting客户端
================================================================================================
python脚本如下:
# adb shell dumpsys window w |findstr \/ |findstr name= # mSurface=Surface(name=com.android.calculator2/com.android.calculator2.Calculator) from appium import webdriver import time desired_caps = { ‘platformName‘: ‘Android‘, ‘deviceName‘:‘8DF6R17503000072‘, ‘platformVersion‘: ‘8.0.0‘, ‘appPackage‘: ‘com.android.calculator2‘, ‘appActivity‘: ‘com.android.calculator2.Calculator‘, ‘automationName‘:‘UiAutomator1‘, } driver = webdriver.Remote(‘http://127.0.0.1:4723/wd/hub‘, desired_caps) time.sleep(10) driver.find_element_by_id("com.android.calculator2:id/digit_3").click() time.sleep(5) driver.find_element_by_id("com.android.calculator2:id/digit_3").click() time.sleep(5) driver.find_element_by_id("com.android.calculator2:id/digit_3").click() time.sleep(5) driver.quit()
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
如何定位元素呢:
打开skd\tools下面的uiautomatorviewer.bat文件
打开需要app界面,找到需要操作和定位元素的界面:
==================================================================================
# adb shell dumpsys window w |findstr \/ |findstr name= # mSurface=Surface(name= com.android.contacts /com.android.contacts.activities.DialtactsActivity ) from appium import webdriver import time desired_caps = { ‘platformName‘: ‘Android‘, ‘deviceName‘:‘8DF6R17503000072‘, ‘platformVersion‘: ‘8.0.0‘, ‘appPackage‘: ‘com.android.contacts‘, ‘appActivity‘: ‘com.android.contacts.activities.DialtactsActivity‘, ‘automationName‘:‘UiAutomator1‘, } driver = webdriver.Remote(‘http://127.0.0.1:4723/wd/hub‘, desired_caps) time.sleep(5) driver.find_element_by_id("com.android.contacts:id/btn_status_right").click() #陌生号码 time.sleep(5) driver.find_element_by_id("com.android.contacts:id/btn_status_middle").click() #未接来电 time.sleep(5) driver.quit()