前语:学习需要总结,或许有些知识自己存在偏差,但是能总结出来就会更加加深所学知识

1.       环境变量配置

必备软件安装:

jdk1.6.0

android-sdk

python:2.7(3.6也可以)

appium

Node.js

Appium-Python-Client

环境安装网络上有很多优秀博文,这里就不多赘述。

参考网页:http://www.hordehome.com/t/appium-python-1/823

http://www.hordehome.com/t/appium-python-2/845

http://www.cnblogs.com/fnng/p/4540731.html

2.       Appium Desired Capabilities

图1

图2

如图一,是appium的setting:

(1)a框内的设置是选择测试apk的一些信息:

a1.Application Path设置的是选择测试apk的存放路径;

a2.Package表示测试apk的包名,选择apk路径后会自动填写;

a3.Launch Activity表示测试apk的Launch Activity,用来启动apk,选择apk路径后会自动获得,但是获得的不一定是正确的Launch Activity,如果是有源码,直接从源码上查看,或问开发apk的工程师,这是针对有测试apk的,如果是自学人员需要拿些别人开发的apk测试学习,下面给几种获取Launch Activity的方法:

@1.反编译app,个人觉得麻烦,不介绍,有想用的同学可以网上搜索。

@2. Log查看:

A.cmd上输入adb logcat –c 清理下log

B.开启日志:adb logcat (也可以把日志输出,如adb logcat >D:\log.txt

C.启动待测apk

D.关闭日志输出:ctrl+c
        E.查看日志,如下面信息包含了包名和launch:

ActivityManager(  847): resumeTopActivityLocked: Resumed ActivityRecord{19c4d12c u0       com.huawei.android.launcher/.Launcher

@3.cmd上aapt命令查看:aapt dump badging D:\test\xxx.apk(APK的全名),前提是环境变量配置了android sdk下的build-tools的aapt的路径

@4.图a3框上选择正确的launch activity,接触多了,自然可以辨别正确的launch activity

a4框里的fullreset ios表示删除整个模拟器目录,android表示通过卸载,而不是清空数据,来重置应用状态。在android上,这也会在会话结束后自动清除被测应用。Noreset选择表示在会话前不要重置应用状态。

(2)b框内的设置:

b1.platformName选择要测试的机器操作系统;

b2.automationName 选择使用的自动化测试引擎,默认appium,所以没必要修改;

b3.platformVersion选择机器操作系统版本,就是对应的api。

b4.deviceName 测试机器的设备名称,把测试机器连接电脑可以通过cmd 输入adb devices查看。

如图二,是appium general setting:

可以通过这里设置远程操作测试,具体可以参考下面博文。

参考网页:http://www.cnblogs.com/puresoul/p/4709189.html

http://www.hordehome.com/t/appium-python-6-remote/934

https://github.com/appium/appium/blob/master/docs/cn/writing-running-appium/caps.cn.md

3.       脚本简介

(1)一个dome

# -*-coding=utf-8 -*-

from appium import webdriver
import time

#设置Capabilities desired_caps = {
'platformName' : 'Android',
'deviceName' : '76P4C15813005463',
'platformVersion' : '5.1',
#测试apk包名
'appPackage' : 'com.huawei.android.launcher',
#测试apk的launcherActivity
'appActivity' : '.Launcher',
}
#进入android系统launcher
driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub',desired_caps)
time.sleep() driver.keyevent('3') #进入相机并拍照一下
driver.find_element_by_xpath("//android.widget.TextView[contains(@text,'相机')]").click()
time.sleep()
driver.find_element_by_id('com.huawei.camera:id/shutter_button').click()
time.sleep()
driver.quit()

这是一个简单的代码,分为三部分,第一部分是申明,第二部分是配置测试app信息,第三部分是app的实际操作。

三个部分第一和第二部分基本固定,主要是第三部分对app操作控件的获取。例子中测试的apk是系统自带launch,

所在appium上是没法设置包名和activity,使用appium自带的界面没法运行脚本,一般采用cmd输入appium打开

appium来运行脚本。

appium入门的更多相关文章

  1. Appium入门示例(python)

    安装Python依赖 pip3.4 install nose pip3.4 install selenium pip3.4 install Appium-Python-Client 运行测试用例and ...

  2. Appium入门示例(Java)

    一.使用Eclipse直接创建案例工程 1.打开Eclipse,[File]-->[New]-->[Project] 2.选择[Java Project]-->[Next] 3.输入 ...

  3. Appium入门(9)—— Appium API

    摘自:http://www.testclass.net/appium/appium-base-api-01/ 1.安装: installApp() driver.installApp("d: ...

  4. Appium入门(8)__控件定位

    部分摘自:http://www.testclass.net/appium/appium-base-find-element/ appium 通过 uiautomatorviewer.bat 工具来查看 ...

  5. Appium入门(7)__Appium Desired Capabilities

    Desired Capabilities 是由多个键值对组成,代表移动设备相关信息.由Appium Client向Appium Server发送. 但无论Appium Client使用何种语言,最终是 ...

  6. Appium入门(6)__appium-desktop安装

    部分摘自:http://www.testclass.net/appium/appium-base-desktop/ Appium-Server主要用来监听移动设备,然后将不同编程语言编写的 appiu ...

  7. Appium入门(5)__ Appium测试用例(1)

    步骤为:启动AVD.启动Appium.写用例(python).执行 一.启动Android模拟器                   二.启动Appium Server 双击appium图标启动,配置 ...

  8. Appium入门(4)__ Appium Client安装

    打算使用 Python 语言编写 appium 自动化测试脚本 一.前提: 1.安装Python语言 到Python官网下载最新版本:https://www.python.org/ 2.安装Pytho ...

  9. Appium入门(3)__ Appium Server安装

    安装Appium 1.下载并安装:https://bitbucket.org/appium/appium.app/downloads/ 2. 系统变量PATH 增加 C:\Program Files ...

随机推荐

  1. 验证页面多个input文本的必填项

    前台页面 JS : function CheckMustWrite(){ var count = $("input[mustwrite = 'true']", document.f ...

  2. Cache-control使用Cache-control:private学习笔记

    其作用根据不同的重新浏览方式,分为以下几种情况:(1).打开新窗口值为private.no-cache.must-revalidate,那么打开新窗口访问时都会重新访问服务器.而如果指定了max-ag ...

  3. <input type="file">中怎设置那个按钮的样式

    最近才开始学习HTML,在练习表单的过程中,发现在使用<input type="file"/>这个类型的元素,产生的文件框和浏览按扭,它们的样式往往不符合我们的需要.怎 ...

  4. Jquery和Javascript 实际项目中写法基础 (1)

    一.JS 是什么,jquery 是什么  就不说明了,直接说一般使用是怎么样的 <!DOCTYPE html> <html> <head> <meta cha ...

  5. PAT (Basic Level) Practise:1026. 程序运行时间

    [题目链接] 要获得一个C语言程序的运行时间,常用的方法是调用头文件time.h,其中提供了clock()函数,可以捕捉从程序开始运行到clock()被调用时所耗费的时间.这个时间单位是clock t ...

  6. java类型转化之SimpleDateFormat-时间转化

    关于Date,时间戳(long),String类型之间的相互转换,主要是用到类SimpleDateFormat. 先介绍SimpleDateFormat类的一些常见格式: 1.参数: code des ...

  7. oracle数据库解析json格式

    随着非关系型数据大规模使用,以json格式产生的数据也出现在我所管理的Oracle数据库的CLOB字段里面,使用过程中就需要解析出指定键的值. 使用了最新版本 如果Oracle版本为12.1.0.2的 ...

  8. jq 文字上下不间断滚动实例

    <div class="ruzhuright">                     <div class="rzcontent"> ...

  9. sql 查询效率

    1. SQL优化的原则是:将一次操作需要读取的BLOCK数减到最低,即在最短的时间达到最大的数据吞吐量.调整不良SQL通常可以从以下几点切入: 检查不良的SQL,考虑其写法是否还有可优化内容 检查子查 ...

  10. 黑马程序员——JAVA基础之IO流缓冲区,转换流,字节流

    ------- android培训.java培训.期待与您交流! ---------- 字符流的缓冲区        缓冲区的出现提高了对数据的读写效率. 对应类 •  BufferedWriter ...