自动化测试 - Appium + Python史上最全最简环境搭建步骤

http://www.testclass.net/appium/appium-base-summary/
新手入门

一,Appium环境搭建
需要用到的软件如下:

在这里插入图片描述

2.1 JDK
http://www.oracle.com/technetwork/java/javase/downloads/index.html
下载好jdk直接点下一步就可以了,然后开始配置变量,参考如下路径:http://jingyan.baidu.com/article/d45ad148ba5ab169552b80d3.html

注意:

classpath值:.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;

path值:%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin

.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;是有“.”这个符号的不能漏掉

按快捷键win+r,在运行内输入cmd,并输入Java,回车,如果出来的是些用法中文,那说明这是正确的,在接下来输入javac,回车,如果出现些用法中文,说明是环境变量配好了。

2.2 下载SDK
http://www.androiddevtools.cn/

直接下载adt/Android studio完美集成,下载好后并进行解压,然后开始配置三个变量:

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

2.设置安卓环境变量

配置环境变量,

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

eg:添加变量名:ANDROID_HOME 变量值: D:\adt\sdk

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

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

adb连接夜神模拟器:
adb connect 127.0.0.1:62001

2.4 安装node.js
进入官网地址并下载:https://nodejs.org/en/download/releases/

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

2.5 安装appium服务端
方法一:进入官网地址并下载

https://github.com/appium/appium-desktop/releases

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

appium安装好后:

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

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

方法二:node.js包管理安装

npm install -g appium

appium –v

npm install -g appium-doctor

appium-doctor

命令安装的appium是控制台程序,没有UI界面。可到github搜索appium的appiumDesktop项目中下载最新版本

但是由于GFW关系,此方法会在安装过程中卡住或是直接报错,解决办法:挂VPN代理FQ;为了满足国内开发人员的需要,淘宝npm镜像cnpmjs.org可替代官方版本。打开输入:

npm install -g appium --registry=https://registry.npm.taobao.org

在这里插入图片描述
https://github.com/appium/appium-desktop/releases

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

如果从官方的资源库下载Appium-Python-Client失败,请自行更换下载源重新下载。在命令行输入"pip install Appium-Python-Client -ihttp://pypi.douban.com/simple"重试

在这里插入图片描述

Tips:检查selenium版本3.3.3

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

import selenium

selenium.version

如果你显示的 selenium 版本是当前最新版本3.3.3的话,那么最好使用下面命令将版本装成3.0.2,网传某些Api的话会报错。

pip3 install -I selenium==3.0.2

3.2 编写测试用例
简单实例点位两个控件,执行点击事件

MyTestCase.py

#!/usr/bin/env python

* coding:utf-8 *

import unittest
import selenium
import time
from appium import webdriver

class MyTestCase(unittest.TestCase):

@classmethod
def setUp(self):
    # super().setUp()
    print('selenium version = ', selenium.__version__)
    desired_caps = {}
    desired_caps['platformName'] = 'Android'
    desired_caps['platformVersion'] = '4.4'
    desired_caps['deviceName'] = '192.168.1.54:5555'
    desired_caps['appPackage'] = 'com. xx'
    #desired_caps['app'] = 'F:// debug.apk'
    desired_caps['appActivity'] = 'com.xx.MainActivity'
    self.driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)


def test_something(self):
    print('test_something click ------ ')

    # xpath:
    time.sleep(2)
    self.driver.find_element_by_xpath("//android.widget.ListView/android.widget.TextView[contains(@text,'测试')]").click()

    # uiautomator -UiSelector:
    # name方式在1.5版本后已废除,能找到接口,不可使用,使用new UiSelector().text替代
    # self.driver.find_element_by_android_uiautomator("newUiSelector().text(\"测试\")").click()

    # class_name - child:
    # items =self.driver.find_elements_by_class_name('android.widget.TextView')
    # items[1].click()

    # id:
    time.sleep(2)
    self.driver.find_element_by_id('com.hisense.vod:id/test_video_resize').click()

@classmethod
def tearDown(self):
    time.sleep(5)
    print('tearDown ------ ')
    self.driver.quit()

if name == ‘main’:
unittest.main()

四,踩坑

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

import selenium

selenium.version

结果

如果你显示的 selenium 版本是当前最新版本3.3.3的话,那么最好使用下面命令将版本装成3.0.2

pip3 install -I selenium==3.0.2

否则的话,在使用Appium-Python-Client的某些Api的话会报错.应该是版本兼容性的问题,3.11已修复的。

2 findElementByName无效.

Searching by name was deprecated over ayear ago and removed from 1.5. In general, searching by accessibility id isbetter for a variety of reasons.

如上findElementByName这个方法从Appium 1.5之后删除了,但是API不经能找到并且也没提示过时,这不坑爹嘛。后来使用下面的代码才解决用name,即text查找元素的方法。

java:

在这里插入图片描述

Python:

self.driver.find_element_by_android_uiautomator(“newUiSelector().text(“测试”)”).click()

3 据说Appium 1.6.3可以查找 Toast 的信息了.

试了下网上的例子发现不好使,一度以为是Client版本的问题。搞了半天才发现需要加下面的代码:

java:

在这里插入图片描述

4 安装的时候重新签名

无意中发现测试的时候弹Toast报错,然后直接编译安装却不保存,猜测是不是在安装过程中Appium改了啥,看了下Service日志,竟然在安装的时候重新签名…

App not signed with debug cert.

2017-02-13 18:17:19:848 - info: [debug] [ADB] Resigning apk.

2017-02-13 18:17:23:938 - info: [debug] [ADB] Zip-aligning ‘app-debug.apk’

2017-02-13 18:17:24:104 - info: [AndroidDriver] Remote apk path is /data/local/tmp/463eb03788048b4a1dacfe28545ee76e.apk

解决方法:

java:

capabilities.setCapability(AndroidMobileCapabilityType.NO_SIGN, true);

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值