GVKun编程网logo

windows 下 android 自动化测试环境搭建(appium+python)(appium安卓自动化测试)

14

想了解windows下android自动化测试环境搭建的新动态吗?本文将为您提供详细的信息,我们还将为您解答关于appium+python的相关问题,此外,我们还将为您介绍关于Android应用UI自

想了解windows 下 android 自动化测试环境搭建的新动态吗?本文将为您提供详细的信息,我们还将为您解答关于appium+python的相关问题,此外,我们还将为您介绍关于Android应用UI自动化测试(Python+appium之appium启动APP前配置的参数)、Android自动化测试——Appium+python+Jenkins自动化测试框架搭建、Appium + python 自动化测试环境配置、Appium App自动化测试环境搭建的新知识。

本文目录一览:

windows 下 android 自动化测试环境搭建(appium+python)(appium安卓自动化测试)

windows 下 android 自动化测试环境搭建(appium+python)(appium安卓自动化测试)



搭建步骤如下:

  1. 安装jdk,安装好后将jdk相关目录加入环境变量,以我的为例:
    将 C:\Program Files (x86)\Java\jdk1.6.0_45\bin 加入path 系统变量
    将 C:\Program Files (x86)\Java\jdk1.6.0_45\lib 加入classpath 变量(没有classpath的话自己新建)
  2. 下载adt-bundle-windows-x86-20130522(版本可选)并解压,这是个集成了android sdk 的集成开发环境,对于开发android程序很方便。我们的自动化测试主要用到的是其中集成的android sdk,但是为了方便阅读相关代码,这个工具是比较好的一个选择。也可以直接下载android sdk
    解压后的目录为(以我为例):D:\adt-bundle-windows-x86-20130522 
    添加环境变量,将D:\adt-bundle-windows-x86-20130522\sdk\tools目录以及D:\adt-bundle-windows-x86-20130522\sdk\platform-tools
    添加至path系统变量
  3. 安装node.js,去node.js官网下载msi格式的安装文件,下载后安装
  4. 安装appium。 node.js安装成功后打开命令行,输入npm install –g appium 命令安装appium,安装完成后在命令行中输入 appium-doctor 检验appium的运行环境是否正常,如果有错误,对照错误解决即可,下图说明appium的android运行环境配置成功:

  5. 安装python,下载并安装python,安装后将python根目录添加至path环境变量
    以我的目录为例:将C:\Python27 加至path环境变量,加入后进入命令行,输入python 出现类似下图所示的界面表示安装成功

  6. 安装appium的python客户端
    下载python-client-master.zip包,下载地址:https://github.com/appium/python-client
    下载后解压,在命令行中进入python-client-master目录,该目录下包含setup.py文件
    进入后输入 python setup.py install命令安装客户端
  7. 启动appium。进入命令行输入appium 即可启动appium,出现如下界面表示启动成功:

    8.运行测试(模拟器)
    *进入命令行,输入 emulator –avd XXXX 来启动模拟器(前提是已经新建了XXXX模拟器,XXXX是已经存在的某个模拟器的名字)
    *重新打开一个命令行,输入appium 命令启动appium
    *运行编写好的python自动化测试脚本执行测试
    9.运行测试(真机)
    *将真机连接至pc,打开usb调试功能
    *进入命令行,输入appium 命令启动appium
    *运行编写好的python自动化测试脚本执行测试即可

Android应用UI自动化测试(Python+appium之appium启动APP前配置的参数)

Android应用UI自动化测试(Python+appium之appium启动APP前配置的参数)

desired_caps = {
    'platformName': 'Android',  # 被测手机是安卓
    'platformVersion': '10',  # 手机安卓版本
    'deviceName': 'xxx',  # 设备名,安卓手机可以随意填写
    'appPackage': 'tv.danmaku.bili',  # 启动APP Package名称
    'appActivity': '.ui.splash.SplashActivity',  # 启动Activity名称
    'unicodeKeyboard': True,  # 使用自带输入法,输入中文时填True
    'resetKeyboard': True,  # 执行完程序恢复原来输入法
    'noreset': True,  # 不要重置App,如果为False的话,执行完脚本后,app的数据会清空,比如你原本登录了,执行完脚本后就退出登录了
    'newCommandTimeout': 6000,
    'automationName': 'UiAutomator2'
}

在这里插入图片描述

appPackage和appActivity获取方法:
1、打开cmd命令行窗口
2、切换到adb的sdk中的build-tools目录下,如:cd D:Porgram\Android\sdk\build-tools
3、输入命令aapt dump badging <apk路径>,如:aapt dump badging C:\Users\Anita\Desktop\VideoPlayer_1.0.5_release.apk
4、查找package:name,等于号后面的名称对应appPackage
5、查找activity:name,等于号后面的名称对应appActivity

Android自动化测试——Appium+python+Jenkins自动化测试框架搭建

Android自动化测试——Appium+python+Jenkins自动化测试框架搭建

目录

 

整体知识框架

环境准备 (windows)

appium安装和使用

deviceName 可通过adb devices 得到

appPackage 和appActivity 的获取:连接手机 dos 输入

 Pycharm引入插件Appium-Python-Client----关联Appium 和Python

 ​

 HTMLTestReportCN----生成测试报告

修改后的测试用例代码 :

测试用例二:FirstTest

测试用例二:SecondTest

主测试用例:使用unittest封装多个测试用例

yaml数据配置----数据分离

日志收集

logging构成

PageObject设计模式----代码封装

封装App启动配置信息 

封装基类:baseview 

 

封装通用公共类 

Windows 中使用批量工具Bat文件运行测试用例

Python 启动Appium

Jenkins 持续集成


整体知识框架

环境准备 (windows)

1.jdk1.8.0 (64位)
2.android-sdk(直接下载安卓studio就都有了)
3.python:3.7
4.Appium-windows-1.15.1
5.Node.js
//以上安装并配置好环境变量
6.Appium-Python-Client
7.pycharm(用于编写脚本)
8.HTMLTestReportCN(用于生成测试报告)
//以下可选
yaml
//以下两个是为了定时执行用例和发送测试报告——可不用安装
9.Tomcat
10.Jenkins 

appium安装和使用

官网地址:https://github.com/appium/appium-desktop/releases/tag/v1.15.1

下载后安装即可

deviceName 可通过adb devices 得到

 

appPackage 和appActivity 的获取:连接手机 dos 输入

adb shell dumpsys window | findstr mCurrentFocus

 Pycharm引入插件Appium-Python-Client----关联Appium 和Python

 

 HTMLTestReportCN----生成测试报告

下载并放入python 目录lib文件夹下

官网:https://github.com/findyou/HTMLTestRunnerCN

HTMLTestReportCN是unittest 拓展插件,二者配合使用

修改后的测试用例代码 :

测试用例二:FirstTest

# This sample code uses the Appium python client
# pip install Appium-Python-Client
# Then you can paste this into a file and simply run with Python

from appium import webdriver
import time
import unittest
from HTMLTestRunnerCN import HTMLTestReportCN

caps = {}
caps["platformName"] = "Android"
caps["platformVersion"] = "10"
caps["deviceName"] = "R28M3126C2W"
caps["appPackage"] = "cn.cntv"
caps["appActivity"] = "cn.cntv.ui.activity.SplashActivity"


class FirstTest(unittest.TestCase):
    def setUp(self) -> None:
        self.driver = webdriver.Remote("http://localhost:4723/wd/hub", caps)

    def tearDown(self) -> None:
        self.driver.quit()

    def test_start(self):
        el1 = self.driver.find_element_by_id("com.android.permissioncontroller:id/permission_allow_button")
        el1.click()
        time.sleep(10)
        el2 = self.driver.find_element_by_id("com.android.permissioncontroller:id/permission_allow_always_button")
        el2.click()
        time.sleep(10)
        el3 = self.driver.find_element_by_id("com.android.permissioncontroller:id/permission_allow_button")
        el3.click()
        time.sleep(10)
        el4 = self.driver.find_element_by_id("cn.cntv:id/agree")
        el4.click()
        time.sleep(10)
        el5 = self.driver.find_element_by_xpath(
            "/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.RelativeLayout/android.widget.FrameLayout[1]/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout[2]/android.widget.LinearLayout/android.widget.RelativeLayout/android.widget.horizontalscrollview/android.widget.LinearLayout/android.widget.LinearLayout[2]/android.widget.FrameLayout/android.widget.RelativeLayout/android.widget.TextView")
        el5.click()
        el6 = self.driver.find_element_by_xpath(
            "/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.RelativeLayout/android.widget.FrameLayout[1]/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout[2]/android.widget.LinearLayout/android.widget.RelativeLayout/android.widget.horizontalscrollview/android.widget.LinearLayout/android.widget.LinearLayout[3]/android.widget.FrameLayout/android.widget.RelativeLayout/android.widget.TextView")
        el6.click()
        el7 = self.driver.find_element_by_xpath(
            "/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.RelativeLayout/android.widget.FrameLayout[1]/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout[2]/android.widget.LinearLayout/android.widget.RelativeLayout/android.widget.horizontalscrollview/android.widget.LinearLayout/android.widget.LinearLayout[4]/android.widget.FrameLayout/android.widget.RelativeLayout/android.widget.TextView")
        el7.click()


if __name__ == '__main__':
    suite = unittest.TestLoader().loadTestsFromTestCase(FirstTest)

    unittest.TextTestRunner().run(suite)

测试用例二:SecondTest

# This sample code uses the Appium python client
# pip install Appium-Python-Client
# Then you can paste this into a file and simply run with Python

from appium import webdriver
import time
import unittest

caps = {}
caps["platformName"] = "Android"
caps["platformVersion"] = "10"
caps["deviceName"] = "R28M3126C2W"
caps["appPackage"] = "cn.cntv.zongyichunwan"
caps["appActivity"] = "cn.cntv.ui.activity.SplashActivity"

#TestCase类,所有测试用例类继承的基本类
class SecondTest(unittest.TestCase):
    def setUp(self) -> None:
        self.driver = webdriver.Remote("http://127.0.0.1:4723/wd/hub", caps)

    def tearDown(self) -> None:
        self.driver.quit()

    def test_start(self):
        el1 = self.driver.find_element_by_id("com.android.permissioncontroller:id/permission_allow_button")
        el1.click()
        time.sleep(10)
        el2 = self.driver.find_element_by_id("com.android.permissioncontroller:id/permission_allow_button")
        el2.click()
        time.sleep(10)
        el3 = self.driver.find_element_by_id("com.android.permissioncontroller:id/permission_allow_button")
        el3.click()
        time.sleep(10)
        el4 = self.driver.find_element_by_id("cn.cntv.zongyichunwan:id/dialog_like_ios_certain")
        el4.click()
        time.sleep(10)
        el5 = self.driver.find_element_by_id("cn.cntv.zongyichunwan:id/btnJump")
        el5.click()
        time.sleep(10)
        el6 = self.driver.find_element_by_xpath(
            "/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.RelativeLayout/android.widget.FrameLayout[1]/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.LinearLayout[1]/android.widget.horizontalscrollview/android.widget.LinearLayout/android.support.v7.app.ActionBar.Tab[2]/android.widget.RelativeLayout/android.widget.LinearLayout/android.widget.TextView")
        el6.click()
        time.sleep(10)
        el7 = self.driver.find_element_by_xpath(
            "/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.RelativeLayout/android.widget.FrameLayout[1]/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.LinearLayout[2]/android.support.v4.view.ViewPager/android.widget.RelativeLayout/android.widget.ListView/android.widget.LinearLayout[1]/android.widget.LinearLayout/android.widget.RelativeLayout/android.widget.ImageView[2]")
        el7.click()
        time.sleep(10)
        self.driver.back()
        el8 = self.driver.find_element_by_xpath(
            "/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.RelativeLayout/android.widget.FrameLayout[1]/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.LinearLayout[2]/android.support.v4.view.ViewPager/android.widget.RelativeLayout/android.widget.ListView/android.widget.LinearLayout[1]/android.widget.LinearLayout/android.widget.TextView")
        el8.click()
        time.sleep(10)
        self.driver.back()


if __name__ == '__main__':
    suite = unittest.TestLoader().loadTestsFromTestCase(SecondTest)
    unittest.TextTestRunner().run(suite)

 

主测试用例:使用unittest封装多个测试用例

# import os
# os.system("python ./FirstTest.py")
# os.system("python ./SecondTest.py")
import unittest
from FirstTest import FirstTest
from SecondTest import SecondTest
import HTMLTestRunnerCN

if __name__ == '__main__':
    suite = unittest.TestSuite()
    suite.addTests(unittest.TestLoader().loadTestsFromTestCase(FirstTest))
    suite.addTests(unittest.TestLoader().loadTestsFromTestCase(SecondTest))

    # 确定生成报告的路径
    filePath = 'D:\ReportCN.html'
    fp = open(filePath, 'wb')
    # 生成报告的Title,描述
    runner = HTMLTestRunnerCN.HTMLTestReportCN(stream=fp, title='自动化测试报告', description='详细测试用例结果', tester='jackron')
    runner.run(suite)

yaml数据配置----数据分离

1.参数配置表:desired_caps.yaml

platformName: Android
platformVersion: 5.1.1
deviceName: 127.0.0.1:62025
app: C:\Users\Shuqing\Desktop\Appium software\chapter4\App\kaoyan3.1.0.apk
noreset: False
appPackage: com.tal.kaoyan
appActivity: com.tal.kaoyan.ui.activity.SplashActivity

python文件进行数据读取

rom appium import webdriver
import yaml

file=open('desired_caps.yaml','r')
data=yaml.load(file)

desired_caps={}
desired_caps['platformName']=data['platformName']

desired_caps['platformVersion']=data['platformVersion']
desired_caps['deviceName']=data['deviceName']

desired_caps['app']=data['app']
desired_caps['noreset']=data['noreset']

desired_caps['appPackage']=data['appPackage']
desired_caps['appActivity']=data['appActivity']

driver = webdriver.Remote('http://'+str(data['ip'])+':'+str(data['port'])+'/wd/hub', desired_caps)

 

日志收集

级别

何时使用

DEBUG

调试信息,也是最详细的日志信息。

INFO

证明事情按预期工作。

WARNING

表明发生了一些意外,或者不久的将来会发生问题(如‘磁盘满了’)。软件还是在正常工作。

ERROR

由于更严重的问题,软件已不能执行一些功能了。

CRITICAL

严重错误,表明软件已不能继续运行了。

 定义日志输出位置和输出格式

#导入logging模块
import logging

logging构成

logging模块包括logger,Handler,Filter,Formatter四个部分。

  • Logger 记录器,用于设置日志采集。
  • Handler 处理器,将日志记录发送至合适的路径。
  • Filter 过滤器,提供了更好的粒度控制,它可以决定输出哪些日志记录。
  • Formatter 格式化器,指明了最终输出中日志的格式。

Formatter

使用Formatter对象设置日志信息最后的规则、结构和内容,默认的时间格式为%Y-%m-%d %H:%M:%s。

格式

描述

%(levelno)s

打印日志级别的数值

%(levelname)s

打印日志级别名称

%(pathname)s

打印当前执行程序的路径

%(filename)s

打印当前执行程序名称

%(funcName)s

打印日志的当前函数

%(lineno)d

打印日志的当前行号

%(asctime)s

打印日志的时间

%(thread)d

打印线程id

%(threadName)s

打印线程名称

%(process)d

打印进程ID

%(message)s

打印日志信息

 

 

logging.basicConfig(filename='runlog.log',level=logging.DEBUG,
                  format='%(asctime)s %(filename)s[line:%(lineno)d] %(levelname)s %(message)s')

PageObject设计模式----代码封装

封装App启动配置信息 

desired_caps.py

import yaml
import logging.config
from appium import webdriver


CON_LOG = '../log/log.conf'
logging.config.fileConfig(CON_LOG)
logging = logging.getLogger()


def appium_desired():

    stream = open('../yaml/desired_caps.yaml', 'r')
    data = yaml.load(stream)

    desired_caps={}
    desired_caps['platformName']=data['platformName']

    desired_caps['platformVersion']=data['platformVersion']
    desired_caps['deviceName']=data['deviceName']

    desired_caps['app']=data['app']
    desired_caps['noreset']=data['noreset']

    desired_caps['unicodeKeyboard']=data['unicodeKeyboard']
    desired_caps['resetKeyboard']=data['resetKeyboard']

    desired_caps['appPackage']=data['appPackage']
    desired_caps['appActivity']=data['appActivity']

    logging.info('start run app...')
    driver = webdriver.Remote('http://'+str(data['ip'])+':'+str(data['port'])+'/wd/hub', desired_caps)

    driver.implicitly_wait(8)
    return driver

if __name__ == '__main__':
    appium_desired()

封装基类:baseview 

class BaseView(object):
    def __init__(self,driver):
        self.driver=driver

    def find_element(self,*loc):
        return self.driver.find_element(*loc)

 

封装通用公共类 

common_fun.py

from appium_advance.page_object.baseView import BaseView
from selenium.common.exceptions import NoSuchElementException
import logging
from selenium.webdriver.common.by import By
from appium_advance.page_object.desired_caps import appium_desired

class Common(BaseView):

    cancelBtn=(By.ID,'android:id/button2')
    skipBtn=(By.ID,'com.tal.kaoyan:id/tv_skip')

    def check_cancelBtn(self):
        logging.info("============check_cancelBtn===============")

        try:
            element = self.driver.find_element(*self.cancelBtn)
        except NoSuchElementException:
            logging.info('update element is not found!')
        else:
            logging.info('click cancelBtn')
            element.click()

    def check_skipBtn(self):
        logging.info("==========check_skipBtn===========")
        try:
            element = self.driver.find_element(*self.skipBtn)
        except NoSuchElementException:
            logging.info('skipBtn element is not found!')
        else:
            logging.info('click skipBtn')
            element.click()

if __name__ == '__main__':

    driver=appium_desired()
    com=Common(driver)
    com.check_updateBtn()
    com.check_skipBtn()

Windows 中使用批量工具Bat文件运行测试用例

@echo off
appium
pause
@echo off
D:
cd D:\study\PycharmProjects\HelloTest
start python MainTest.py

Python 启动Appium

import subprocess
from time import ctime

def appium_start(host,port):
    '''启动appium server'''
    bootstrap_port = str(port + 1)
    cmd = 'start /b appium -a ' + host + ' -p ' + str(port) + ' -bp ' + str(bootstrap_port)

    print('%s at %s' %(cmd,ctime()))
    subprocess.Popen(cmd, shell=True,stdout=open('./appium_log/'+str(port)+'.log','a'),stderr=subprocess.STDOUT)


if __name__ == '__main__':
    host = '127.0.0.1'
    for i in range(2):
        port=4723+2*i
        appium_start(host,port)

Jenkins 持续集成

jenkins定时构建语法

* * * * *
(五颗星,中间用空格隔开)

第一个*表示分钟,取值0~59
第二个*表示小时,取值0~23
第三个*表示一个月的第几天,取值1~31
第四个*表示第几月,取值1~12
第五个*表示一周中的第几天,取值0~7,其中0和7代表的都是周日
每天下午下班前18点定时构建一次

0 18 * * *
每天早上8点构建一次

0 8 * * *
每30分钟构建一次:

H/30 * * * *

 

 

 

jackron2014 发布了58 篇原创文章 · 获赞 4 · 访问量 4万+ 私信 关注

Appium + python 自动化测试环境配置

Appium + python 自动化测试环境配置

--------------------------------------------------------------1. jdk-8u121-window(32位的就下载32位的,64位的就下载64位的)。2.Android-sdk_r24.3.4-windows(下载这个adt-bundle-windows-x86-20140624)3.Python:(V3.6也可以)4.appium:1.4.13.15.Node.js:node-v4.4.7-x646.Appium-python-Client7.pycharm————————————————--------------------------------1.1jdk1.8.exe 安装,配置环境变量   classpath值:.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;   path值:%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin  cmd ->  java  测试配置成功!2.1 下载SDK   已经有包了  安装好就可以   注意:必须打开设置  SDK marager   下载Tools前3个     环境变量:          新建:ANDROID_HOME =   路径      path:%ANDROID_HOME%\tools;%ANDROID_HOME%\platform-tools;cmd->  adb  测试3.1官网下载 python   环境变量:安装完成后将D:\python和D:\python\Scripts,添加到环境变量path下   cmd -> python -v  测试4.1nodeJS   安装nodejs包,配置nodejs 环境变量       cmd ->  npm -v       cmd ->  配置淘宝镜像源  npm install -g appium   appium –v   npm install -g appium-doctor   appium-doctor(测试语句)5.1软件安装   appinum        下载链接:https://github.com/appium/appium-desktop/releases       打开exe配置 : 127.0.0.1  默认端口            pip  install   Appium-Python-Client测试  cmd ->  adb devices  连接模拟器的手机6.1 安装pycharm编辑器大功告成!  

Appium App自动化测试环境搭建

Appium App自动化测试环境搭建

一、安装Python
python下载地址:可以去python官网:https://www.python.org/下载对应机器的安装包。以下版本可以任意选择进行下载。



双击已下载的python安装包,出现如下图所示的界面,点击运行,

<ignore_js_op>



然后下一步下一步进行默认安装即可,安装成功后会有对应的路径:




  添加环境变量后,输入python就会直接进入python的环境中,现在开始演示手动添加到环境变量: 首先,点击计算机->属性->高级系统设置  

  打开path后显示如下:  

  点击新建-》输入python的安装路径(C:\Users\Administrator\AppData\Local\Programs\Python\python36)  

  然后点击确定,进行保存! 接下来进行验证python是否安装成功:在cmd命令下输入python,效果如下:  

  此时恭喜你,Python环境已经搭建完成!!!

 

  二、JDK环境变量配置           2.1) jdk下载地址: https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html 。 下载并进行安装。           <ignore_js_op>

            2.2)配置                安装完成后我的电脑系统变量新建用户变量,变量名:JAVA_HOME ,变量值:C:\Program Files\Java\jdk1.8.0_40 (java的安装路径)。并在系统变量path中加入%JAVA_HOME%\bin。            <ignore_js_op>

         
            2.3)验证JDK环境是否OK                  打开cmd输入java -version进行验证,如下图表示ok。                     <ignore_js_op>

            3、SDK环境变量配置                3.1)下载sdk                下载地址:http://developer.android.com/sdk/index.html  ,一般需要翻墙,国内可以通过下载地址:http://www.androiddevtools.cn/  。               3.2)配置环境变量               新建系统变量,变量名: ANDROID_HOME,变量值:D:\xuehai\tools\sdk(根据你电脑sdk实际的位置确定)。并在系统变量path中加入%ANDROID_HOME%\platform-          tools;%ANDROID_HOME%\tools  。         <ignore_js_op>

    3.3)验证环境变量配置是否OK   cmd中输入adb进行验证,如下图表示ok   <ignore_js_op>


4、 下载nodejs 并配置环境变量             4.1)下载地址:  http://www.nodejs.org/               4.2)环境配置:                     将node安装路径D:\Program Files\nodejs(具体根据你安装的路径决定)添加到环境变量Path中。              4.3)验证环境变量:                      打开cmd输入node -v或者npm -v,如下图即正常:                    <ignore_js_op>

  5、下载安装Appium        下载离线包安装,地址:appium.io 有对应的downloads地址。        安装后如下图:          <ignore_js_op>


6、安装其他依赖库       在cmd下输入如下命令:          
  1. pip install  selenium
  2. pip install  Appium-Python-Client  
复制代码
7、Appium第一个程序运行        1、电脑插上手机真机或者电脑安装手机模拟器        2、手机真机或者模拟器开启调试模式,设置开发者选项->USB调试开启        3、cmd中输入adb devices 查看手机是否和电脑正常连接        4、启动appium server        5、pycharm编写第一个appium 代码demo                 流程:                
  1. 1)首先打开模拟器或者插上一个真机
  2. 2)adb devices 验证设备是否可以和模拟器正常通信​               
  3. 3)adb install 安装apk​               
  4. 4)启动appium server​              
  5. 5)运行脚本
复制代码


http://www.bcbxhome.com/bcbx/forum.PHP?mod=viewthread&tid=9&fromuid=27
(出处: 编测编学软件测试)

关于windows 下 android 自动化测试环境搭建appium+python的介绍现已完结,谢谢您的耐心阅读,如果想了解更多关于Android应用UI自动化测试(Python+appium之appium启动APP前配置的参数)、Android自动化测试——Appium+python+Jenkins自动化测试框架搭建、Appium + python 自动化测试环境配置、Appium App自动化测试环境搭建的相关知识,请在本站寻找。

本文标签: