Python3appium环境的搭建和简要技巧

5次阅读

共计 4107 个字符,预计需要花费 11 分钟才能阅读完成。

Appium 是一个自动化测试开源工具,支持 iOS 平台和 Android 平台上的原生应用,web 应用和混合应用。由.net 编写,环境搭建比较麻烦。主要包含 Android 开发环境、appium 环境、python 环境的搭建

下面介绍下 Python3+appium 在 Windows 下搭建 Android 应用环境:

参考:上海 - 悠悠 https://www.cnblogs.com/yoyok…

一、Java 环境 jdk 安装

1. 下载 jdk 包,1.6 至 1.8 都可。根据自己的系统选择对应版本(如不会,可轻易在百度找到 JDK 安装配置方法)2. 一路傻瓜式安装,注意安装路径不要有空格,不要有中文。jdk 和 jre 不要放在一个文件夹下

3. 设置三个环境变量, 我的电脑 > 选择“属性”->“高级”->“环境变量”->“系统变量”->“新建”

JAVA_HOME—-C:Program FilesJavajdk1.8.0_121”(根据自己安装路径填写)

CLASSPATH— .;%JAVA_HOME%lib;%JAVA_HOME%libtools.jar;

PATH—–;%JAVA_HOME%bin;%JAVA_HOME%jrebin;

在 path 路径下加上面那两个,这里就不多说了

4. 打开 cmd 验证是否安装成功,输入 java -version,然后输入 javac

能显示版本号和下面的帮助信息说明安装成功

三、android-sdk 下载安装

sdk 环境配置参考:http://www.cnblogs.com/puresoul/p/4597211.html

Android sdk 下载地址:http://tools.android-studio.o…

1. 下载 android-sdk, 这个是做 android 测试和开发的必备环境,2. 解压后,里面有个 SDK manager.exe 双击打开


3. 勾选你要下载的 API 版本和对应的 android 版本,后面模拟器会用到(不下载用其它模拟器也行,或者真机),然后坐等下载

四、android-sdk 环境变量

1. 在系统变量新建:ANDROID_HOME,对应变量值为:D:\androidsdk\android-sdk-windows(sdk 安装路径)2.path 添加两个变量,将以下箭头所指的两个文件路径添加到 path 里


3.path 里面添加 D:\androidsdk\android-sdk-windows\tools 和 D:\androidsdk\android-sdk-windows\platform-tools

五、adb 环境

1. 因为 adb 是在 D:\androidsdk\android-sdk-windows\platform-tools 这个目录下的,所以上面添加了环境变量后,可以直接在 cmd 里面运行了。

2. 在 cmd 输入 adb 可以查看对应版本号

六、连接手机

1. 手机用数据线连电脑,如果安装了 91 助手或者 360 什么的可以先下载手机驱动,确认手机能连上

2. 打开 cmd 输入:adb devices, 当屏幕上出现一串字符,后面显示 devices 说明连接成功(出现其它的提示,得检查自己的环境了)

到这里 android 的测试开发环境已经装好了.

七、Python 安装

2. 下载 Python 安装包,选择 2.7 版本和 3.6 版本都可以

官网下载地址:https://www.python.org/15

3.Python 安装,双击傻瓜式安装(别安装在 c 盘哦)4. 小编的安装目录在 d 盘:D:\python

5. 安装完成后,看下这个目录 D:\python\Scripts,有没 pip.exe 和 easy_install.exe(一般都有)6. 将 D:\python 和 D:\python\Scripts,添加到环境变量 path 下

7. 打开 cmd 输入 python, 出现版本号,然后输入 print("hello world!")

验证环境是否搭建成功

1、appium 工作原理

当我在 Windows 平台上,通过 Python(python-client)编写了一个 appium 自动化脚本并执行,请求会首先到 appium.dum(Windows 下的 appium-Server),appium-Server 通过解析,驱动 Android 设备来执行 appium 自动化脚本。

2、adb 连接模拟器
别人有比较详细的教程,这里就不一一赘述了,直接贴上地址吧:智汇返佣 https://www.kaifx.cn/broker/t…

这个步骤的时候,遇到了一个坑,cmd 中输入 adb devices 验证是否连接成功的时候,报错:adb server version (31) doesn’t match this client (36),原因是 SDK 的 adb.exe 版本与夜神模拟器中的不一致,把夜神模拟器安装目录下 D:Program FilesNoxbin 中的 adb.exe 删掉,把 SDK 的 C:adt-bundle-windows-x86_64-20140702sdkplatform-tools 目录下的 adb.exe 文件拷贝过来,就可以解决了!

2、appium-client(python)与 appium-server 创建连接
启动 appium(即 appium-desktop),如图即为启动成功

编写第一个 Appium 用例

代码实现:

复制代码

– coding: utf-8 –

from appium import webdriver
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.expected_conditions import NoSuchElementException

import unittest, time, os

global driver

class LoginAndroidTests(unittest.TestCase):

def setUp(self):
    
    #初始化测试平台
    desired_caps={}
    desired_caps['platformName']='Android'
    desired_caps['platformVersion']='4.4.2'
    desired_caps['deviceName']='UE1'
    #老师平板
    desired_caps['appPackage']='com.uet.teacherspad'
    desired_caps['appActivity']='com.uet.teacherspad.activity.common.LauncherActivity'
    
    #学生平板

desired_caps[‘appPackage’]=’com.uet.studentpad’

desired_caps[‘appActivity’]=’com.uet.studentpad.activity.LauncherActivity’

    
    self.driver=webdriver.Remote("http://127.0.0.1:4723/wd/hub",desired_caps)
            

def test_login(self):
    '''登录''' 
    
      
    time.sleep(2) 
    
    #学生登录

self.driver.find_element(By.ID,’com.uet.studentpad:id/editTxt_login_username’).clear()

self.driver.find_element(By.ID,’com.uet.studentpad:id/editTxt_login_username’).send_keys(‘13732650301’)

self.driver.find_element(By.ID,’com.uet.studentpad:id/editTxt_login_password’).clear()

self.driver.find_element(By.ID,’com.uet.studentpad:id/editTxt_login_password’).send_keys(‘123123’)

self.driver.find_element(By.ID,’com.uet.studentpad:id/btn_login_login’).click()

    
    #老师登录
  
    self.driver.find_element(By.ID,'com.uet.teacherspad:id/editTxt_login_username').clear()
    self.driver.find_element(By.ID,'com.uet.teacherspad:id/editTxt_login_username').send_keys('13732650301')
    
    self.driver.find_element(By.ID,'com.uet.teacherspad:id/editTxt_login_password').clear()
    self.driver.find_element(By.ID,'com.uet.teacherspad:id/editTxt_login_password').send_keys('123123')
    time.sleep(6)
    self.driver.find_element(By.ID,'com.uet.teacherspad:id/btn_login_login').click()
    
    time.sleep(3)
    
    self.driver.find_element(By.NAME,u'课堂教学').click()
    
    time.sleep(3)
    
    self.driver.find_element(By.NAME,u'课堂练习').click()
    
    time.sleep(3)
    


def tearDown(self):
    self.driver.quit()


if name == ‘__main__’:


unittest.main(verbosity=2)

正文完
 0