appium自动化测试环境搭建

1、需要用到的软件如下:

1.jdk8u73windowsi586(32位的就下载32位的,64位的就下载64位的)。

2.android-sdk_r24.4.1-windows.zip(下载这个adt-bundle-windows-x86_64-20140702)

3.Python:V3.7

4.appium:1.4.16.1

5.Node.js:node-v10.16.3-x64

6.Appium-python-Client

7.pycharm

其中1-5是可以先下载的,6则需要在完成前面的五个步骤后才进行

2.1、JDK

下载地址:略

配置环境变量:

新建JAVA_HOME设置为你的安装路径(C:Program Files (x86)Javajdk1.8.0_73)

classpath值:.;%JAVA_HOME%libdt.jar;%JAVA_HOME%lib ools.jar;

path值:%JAVA_HOME%in;%JAVA_HOME%jrein

.;%JAVA_HOME%libdt.jar;%JAVA_HOME%lib ools.jar;是有“.”这个符号的不能漏掉

配置完成后,进入cmd,输入javac如果出来用法中文,说明配置正确。输入java -version查看版本

2.2、SDK

下载地址:http://www.androiddevtools.cn/

1.解压adt集成包到合适的路径下面,比如D:SDK

2.设置安卓环境变量

配置环境变量,

设置ANDROID_HOME系统变量为你的android SDK路径,并把tools和platform-tools两个目录加入到系统的Path路径里。

eg:添加变量名:ANDROID_HOME 变量值: D:adtsdk

并把这句添加到 %ANDROID_HOME% ools;%ANDROID_HOME%platform-tools记得要加上";"

配置完环境后,可以在运行cmd后输入 adb(能看到当前版本号),再输入android-h(tools目录下的,如果出来一堆文字则是可以的)

2.3、python

安装完成后将D:python和D:pythonScripts,添加到环境变量path下

打开cmd输入python,出现版本号,然后输入print("helloworld!")这样python就是安装好了。

2.4、node.js

进入官网地址并下载:https://nodejs.org/en/download/

下载后一路傻瓜式安装,安装完成后,运行cmd,输入node –v查看版本号,然后输入npm 

2.5、appium服务端

下载地址:https://bitbucket.org/appium/appium.app/downloads/

完整安装带UI的appium,可以从官网直接下载dmg(mac)或者zip(Windows),运行即可。

appium安装好后:

找到这个文件安装目录D:appium ode_modules.bin

将上面的地址添加到环境变量path下。

打开cmd,输入appium-doctor,检查环境是否OK,出现allchecks were successful,说明环境OK。

2.6、Appium-Python-Client

进入cmd 输入:pip install Appium-Python-Client。通过Python安装等待安装完成。

超时报错时,再次输入重试。

安装 Appium-Python-Client 的同时会安装一个selenium模块.试着进入python3交互命令行,然后执行下面命令:

import selenium

selenium.__version__

2.7、安装pycharm

3、测试用例编写

3.1、appium连接模拟器或真机

模拟器:

1、创建一个AVD并启动,android sdk中自带AVD Manager

2、启动appium 点击右上角的启动按钮

 appium自动化测试环境搭建

启动成功后

appium自动化测试环境搭建

真机:

1、打开usb调试模式

2、使用手机连接电脑

在cmd中输入adb devices查看是否连接成功
新手可能会出现两个问题 ,一是输入adb命令时提示不是内部命令或者外部命令

那么你需要下载一个adb工具包并存放在C:WindowsSystem32目录下(必须强调:与sdk中的adb工具包版本一致!!!!

appium自动化测试环境搭建

二是需要打开手机的usb调试模式并安装好驱动

3、启动appium服务
在cmd命令中输入:appium

appium自动化测试环境搭建

第三方模拟器:(本次以网易MuMu为例)

1、连接到模拟器

打开cmd(如果使用MuMu自带adb,则cd C:Program Files (x86)MuMuemulator emuvmonitorin)

adb kill-server(MuMu自带:adb_server.exe kill-server)

连接模拟器端口:adb connect 127.0.0.1:7555(MuMu自带:adb_server.exe connect 127.0.0.1:7555)

列出已连接的设备:adb devices(MuMu自带:adb_server.exe devices),正常会显示MuMu的设备已连接,则可以进行下一步的操作了

appium自动化测试环境搭建

注意:如果设备列表里没有显示127.0.0.1:7555设备,则可多次尝试adb kill-server和adb connect 127.0.0.1:7555连接

2、启动Appium服务

3.2、找到被测APP的包名和Activity Name

使用adb devices命令确认连接正常

然后 打开被测APP,输入下面的命令,就会显示出APP的包名与ActivityName

本人最常使用第3条命令

     adb shell dumpsys window w | findstr / | findstr name=

或 adb shell dumpsys window |findstr mCurrent

或 adb shell "dumpsys window w|grep /|grep name=|sed 's/mSurface=Surface(name=//g'|sed 's/)//g'|sed 's/ //g'"

appium自动化测试环境搭建

3.3、启动UI Automator Viewer(安卓SDK自带的工具)

在SDK的安装目录下双击uiautomatorviewer.bat就可以启动,可以查看APP页面元素属性,进而定位元素,实现各种操作

4个按钮从左至右功能分别是:打开已经保存的布局,获取详细布局,获取简洁布局,保存布局

appium自动化测试环境搭建

# -*- coding:utf-8 -*-
from appium import webdriver
from time import sleep
import unittest
import selenium

class MyTestCase(unittest.TestCase):
    
    @classmethod
    def setUp(self):
        print('selenium version=',selenium.__version__)
        
        desired_caps ={
        'platformName':'Android',
        'deviceName':'127.0.0.1:7555',
        'platformVersion':'6.0.1',
        'appPackage':'com.baidu.yuedu',
        'appActivity':'com.baidu.yuedu.splash.SplashActivity',
        'unicodeKeyboard':True,#绕过手机键盘操作,unicodeKeyboard是使用unicode编码方式发送字符串
        'resetKeyboard':True#绕过手机键盘操作,resetKeyboard是将键盘隐藏起来
        }
        self.driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub',desired_caps)

    def test_something(self):
        sleep(10)
        self.driver.find_element_by_name("分类").click()
        sleep(5)
        self.driver.find_element_by_name("文学艺术").click()
        sleep(5)
        self.driver.find_element_by_name("孤独是一个人的清欢").click()
        sleep(5)
        
    @classmethod
    def tearDown(self):
        sleep(3)
        print("tearDown-------")
        self.driver.quit()
        
if __name__=="__main__":
    unittest.main()
MyTestCase