Appium简介

Appium是目前非常流行的移动端自动化测试工具,它是一个开源、跨平台的自动化测试工具,用于测试原生和轻量移动应用,支持 iOS, Android 和 FirefoxOS 平台。同时它也支持python语言来编写测试代码,下面就介绍一下怎么用IPython Shell来学习Appium。

Appium测试环境

Appium环境搭建

首先是Appium的环境搭建,这部分请参考官网的文档,如果有问题可以上网搜索,能找到很多相关的教程。

完成搭建之后在终端中输入下面命令来检查环境是否正确。

$ appium-doctor

输出如下:

info AppiumDoctor Appium Doctor v.1.4.1

info AppiumDoctor ### Diagnostic starting ###

info AppiumDoctor ✔ The Node.js binary was found at: /usr/bin/node

info AppiumDoctor ✔ Node version is 6.3.1

--略--

info AppiumDoctor Everything looks good, bye!

info AppiumDoctor

Android手机设置

准备一部android手机,我的使用的手机是Nexus 4,系统版本是5.1.1。

开启手机的开发者模式,然后设置充电时不锁定屏幕,这样测试时会方便一点。

通过数据线将手机和电脑相连接,在手机上选择允许USB调试。

最后在终端输入下面命令来检查设备是否链接正常:

$ adb devices

输出如下:

List of devices attached

04c5a5af52197902 device

Appium服务启动

环境搭建好之后,通过下面命令来启动appium服务

$ appium -a 127.0.0.1 -p 4723 #启动服务,并且指定ip和端口

可以通过下面命令来查看具体的选项的说明和用法:

$ appium --help

利用IPython学习Appium

第一个appium自动化python脚本

打开你最喜爱的文本编辑器(例如:vim),输入下面python代码,并保存为appium_deom.py文件。

#!/usr/bin/env python3

# coding=utf-8

from appium import webdriver

desired_caps = {}

desired_caps['platformName'] = 'Android' #设置操作平台

desired_caps['platformVersion'] = '5.1.1' #操作系统版本

desired_caps['deviceName'] = 'Nexus 4' #设备名称

# 设置要启动的应用的包名,可以通过UI automator Viewer工具查看

desired_caps['appPackage'] = 'com.android.calculator2'

# 设置启动应用的首页信息,可以通过adb logcat抓取到

desired_caps['appActivity'] = '.Calculator'

desired_caps['udid'] = '04c5a5af52197902' #设备ID,可以通过adb devices命令查看

desired_caps['noReset'] = 'True' # 设置会话不会重置

desired_caps['unicodeKeyboard'] = 'True' #设置可以输入中文

desired_caps['resetKeyboard'] = 'True' #同上,设置中文输入

#设置python shell命令行的超时时间,默认是60秒

desired_caps['newCommandTimeout'] = 6000

print(desired_caps) #打印配置信息

#使用上面的配置,新建driver对象

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

driver.implicitly_wait(10) #使用隐性等待10秒

注意:

newCommandTimeout选项一定要设置的时间比较长,默认的60秒,如果在ipython中长时间不输入语句的话,很容易出现会话自动结束问题。

另外,上面代码中“appPackage”和“appActivity”必须设置,如果没有设置会提示错误信息。

IPython的基本使用可以参考之前写的文章IPython基本介绍。

在终端中输入命令启动ipython并且运行脚本

$ ipython

Python 3.5.2+ (default, Nov 3 2016, 11:10:16)

--略--

help -> Python's own help system.

object? -> Details about 'object', use 'object??' for extra details.

In [1]: %run appium_deom.py #运行上面写好的脚本

{'appPackage': 'com.android.calculator2', 'platformName': 'Android',

'resetKeyboard': 'True', 'unicodeKeyboard': 'True', 'udid': '04c5a5af52197902',

'platformVersion': '5.1.1', 'noReset': 'True', 'newCommandTimeout': 6000,

'deviceName': 'Nexus 4', 'appActivity': '.Calculator'}

In [2]:

通过%run 命令运行脚本成功后,脚本中的变量和函数等可以直接在ipython中使用。

利用ipython探索appium api

Tab自动补齐

通过在ipython shell中输入driver.后按[Tab 键]。即利用ipython的自动补齐功能可以查看driver对象下有多少方法和属性。

也可以输入部分关键词后自动补齐,补齐的方式和bash shell类似。例如输入driver.find_element后按Tab键:

help()函数查看帮助

还有可以利用help函数来查看driver对象中的函数的使用方法,命令示例:

In [3]: help(driver.get_screenshot_as_file)

输出如下:

Help on method get_screenshot_as_file in module selenium.webdriver.remote.webdriver:

get_screenshot_as_file(filename) method of appium.webdriver.webdriver.WebDriver instance

Gets the screenshot of the current window. Returns False if there is

any IOError, else returns True. Use full paths in your filename.

:Args:

- filename: The full path you wish to save your screenshot to.

:Usage:

driver.get_screenshot_as_file('/Screenshots/foo.png')

在ipython中执行python语句

现在可以在ipython中一条一条的执行python代码,可以马上在手机上看到效果,例如执行元素定位并点击操作的语句:

In [9]: driver.find_element_by_id('com.android.calculator2:id/digit_7').click() #找到按钮“7”并点击

如果没有问题的话,你马上就可以在手机上看到appium的执行效果。

通过这种方法,你可以进行实验,或者试错法。也可以通过粘贴网上的代码到ipython中运行,可以马上查看运行结果。

最后,执行下面语句来退出driver,结束本次测试。

In [10]: driver.quit()

小结

利用ipython不需要编写完整的脚本后再运行和调试,可以直接单条语句运行和调试,这样就为我们节省了不少时间。个人认为学习IT方面的知识,多动手实践是非常好的学习方式。而ipython正好能帮助我们快速方便的探索和实验appium的使用方法。

appium java 虫师_利用 IPython 来学习 Appium相关推荐

  1. appium java 虫师_如何在Appium中使用AI定位

    当我们在写自动化测试脚本的时候,传统情况下一定要知道元素的属性,如id.name.class等.那么通过AI的方式定位元素可能就不需要知道元素的属性,评价人对元素的判断来定位,比如,看到一个搜索框,直 ...

  2. winsock使用java编写_利用Socket进行Java网络编程(一)

    利用Socket进行Java网络编程(一) 考试吧(Exam8.com) 2003-03-04 08:00:00 评论(0)条 作者: 郗旻 Socket是网络上运行的两个程序间双向通讯的一端,它既可 ...

  3. java建立_利用Java创建Windows服务

    1.Java测试代码 importorg.apache.log4j.Logger;public classTest {private static Logger logger = Logger.get ...

  4. java 双击_利用java开发一个双击执行的小程序

    之前我们利用java写了很多东西,但是好像都没有什么实际意义. 因为有意义桌面小程序怎么都得有个界面,可是界面又不太好搞.或者 了解到这一层的人就少之又少了. 呀,是不是还得开辟一些版面来介绍awt和 ...

  5. 学java专科_专科学历可以学习java开发吗

    学习Java的热潮越来越高涨,除了转行而来的人,很多刚毕业的学生也加入到其中.很多人都觉得学习Java需要有一个高学历作为基础,一些专科生在学习之前会犹豫,他们是否能学习Java,首先学程序开发,入行 ...

  6. UML设计java程序_利用UML序列图设计Java应用程序详解

    [IT168 技术文章] Java应用程序由许多类所构成,是Java实现面向对象应用程序的核心.类图主要描述Java应用程序中各种类之间的相互静态关系,如类的继承.抽象.接口以及各种关联.要利用UML ...

  7. oxygen 生成java对象_利用oxygen编辑并生成xml文件,并使用JAVA的JAXB技术完成xml的解析...

    首先下载oxygen软件(Oxygen XML Editor),目前使用的是试用版(可以安装好软件以后get trial licence,获得免费使用30天的权限,当然这里鼓励大家用正版软件!!!) ...

  8. java 火焰_利用火焰图查找java耗时最长的方法

    原标题:利用火焰图查找java耗时最长的方法 众所周知java方法有两种,一种是纯粹的java方法,另外一种是jni,java调用c的,方法声明是java的,实现并不是. 现在通过jni实现一些效率的 ...

  9. Java毕设_基于Android的学习无忧APP的设计与实现

    基于Android的学习无忧APP的设计与实现 基于Android的学习无忧APP的设计与实现mysql数据库创建语句 基于Android的学习无忧APP的设计与实现oracle数据库创建语句 基于A ...

最新文章

  1. Python2代码转换成Python3代码
  2. excel图片变成代码_三行代码把女朋友照片变成了素描图片!以为我画的!爱我爱的不行...
  3. 机器学习第十篇:如何评价模型效果评估
  4. java虚拟机参数优化_JAVA虚拟机JVM参数优化(2):垃圾收集算法选择
  5. Android如何回调编码后的音视频数据
  6. [轉]MS SQL 显示表结构
  7. obs多推流地址_什么都比不上动手能力,OBS 推流实践小记
  8. 辽宁省沈阳市谷歌高清卫星地图下载
  9. commons-io之FileUtils
  10. 安全合规/等级保护--13--我们通过了等级保护三级认证
  11. Qt实现 文件比较工具
  12. pearson特征选择matlab,常用的特征选择方法之 Pearson 相关系数
  13. Fate Decision剧本
  14. 用户故事 | 工商银行核心应用 MySQL 治理实践
  15. win10系统更新服务器太慢了,win10更新慢如何解决
  16. 基于ssl协议和基于openssl工具创建私有CA
  17. 什么原因导致物联卡有信号不能上网
  18. 比较血饮、谷雨、龙牙的武器哪个好点
  19. 浅析计算机网络技术相关论文,计算机网络技术浅析论文 - 经典论文
  20. 华硕固件安装扩展插件_华硕RT-AC86U官改固件-支持AiMesh+软件中心+ROG 3.0.0.4.384.20648...

热门文章

  1. Android调用系统图库获取图片
  2. 基于Java的学生在线选课系统设计与实现
  3. yandex广告的投放要求 (网站篇)
  4. 《数据挖掘导论》笔记(四)
  5. BZOJ 2325 [ZJOI2011]道馆之战
  6. jdk1.8、jre1.8运行环境下载安装与环境配置
  7. 北京理工大学 计算机学院男女比例,39所985高校男女比例排名,看看哪些学校比例严重失调!...
  8. java如何打印当前月份日历_打印当前月份日历
  9. 野狐网游分析手记(2016年3月28日更新)
  10. How to Find Crappy Programmers