APPnium+PYthon对安卓APP进行自动化测试

测试环境搭建
需要用到的软件如下:

  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.1

5.Node.js:node-v4.4.7-x64

6.Appium-python-Client

一、其中1-5是可以先下载的,6则需要在完成前面的五个步骤后才进行。

下载好jdk直接点下一步就可以了,然后开始配置变量,参考如下路径:http://jingyan.baidu.com/article/d45ad148ba5ab169552b80d3.html 注意.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;是有“.”这个符号的不能漏掉

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

二、下载这个adt-bundle-windows-x86-20140624

下载好后并进行解压,然后开始配置三个变量:

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(如果出来一堆文字则是可以的)

三安装python

进入官网或百度下载python下载好后安装到所需安装路径,如在D盘中新建一个python文件夹,如d:\python34

安装完成后将D:\python和D:\python\Scripts,添加到环境变量path下

打开cmd输入python,出现版本号,然后输入print(“helloworld!”)这样python就是安装好了。

四、安装node.js

进入官网地址并下载:https://nodejs.org/en/download/

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

五、安装appium

进入官网地址并下载

https://bitbucket.org/appium/appium.app/downloads/

下载后一路傻瓜式安装即可。

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

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

3.打卡cmd,输入appium-doctor,检查环境是否OK,出现allchecks were successful,说明环境OK

六、安装Appium-Python-Client

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

Python集成开发环境PyCharm安装
安装流程参考:http://www.jianshu.com/p/042324342bf4

需要激活可以购买正版或网上搜索激活码。

简单自动化测试用例编写
一、使用pycharm创建python项目

在这里插入图片描述
选择 pure python项目并选择项目存放目录

在这里插入图片描述

二、在项目中新建unittest文件

右击项目—New—Python File
在这里插入图片描述

选择python unit test并输入文件名
在这里插入图片描述

三、对unittest补充setup及teardown函数

对类MyTestCase添加setUp函数(这是测试用例执行前的准备动作,负责告诉appium监听那个端口、与那个手机连接、安装那个应用等信息)
在这里插入图片描述

对类MyTestCase添加TearDown函数(这是测试用例执行结束后的动作,可以执行保存执行结果等操作)
在这里插入图片描述

四、在test_something中编写测试用例

循环10次执行登录操作
在这里插入图片描述

运行测试用例
一、打开android虚拟机或者连接真机

打开虚拟机(用到虚拟机的一定是开发人员了,不会开就gg吧)或者连接真机(真机需要开启调试模式)

二、打开并运行appium

点击android图标配置信息(这里的信息其实在我们的用例编写时setUp就已经配置过,不过在setUp中的配置可能出现无效的情况,这里就可以根据需要自己配置)
在这里插入图片描述

点击设置图标

1、 可以对里边的server地址端口进行修改。

2、 当session不一致时实行覆盖。

3、 输出log文件方便查看执行的过程及结果。
在这里插入图片描述

点击运行图标,当现实info:Console logLeveL :debug是代表成功运行(此时appium已经与android设备建立连接,当执行用例时就可以通过appium向android设备发送命令了)
在这里插入图片描述

三、运行测试用例

完成上述几步后,开始运行测试用例

在python集成开发环境中点击运行按钮(当按钮无效时可能需要选择运行的文件或配置运行设置)

在这里插入图片描述

四、根据报错信息修改测试用例

1、运行时可能出现页面元素无法找到等问题,可以换一种元素的查找方式

2、另外休眠时间也需要注意,避免页面还未加载时执行页面元素的点击等操作

五、查看页面元素

Appium有自带的页面元素的查看工具

点击搜索图标—点击刷新(appium的运行按钮与android设备必须为开启状态)
在这里插入图片描述

其他的界面元素查看工具:UI AutomatorViewer(在android sdk 的tools的bin文件夹下)

Appium运行原理
在这里插入图片描述
测试用例中用到的api
打印上下文

driver.contexts

打印当前上下文

driver.context

driver.current_context

切换上下文

driver.switch_to.context(‘WEBVIEW’)

打印页面元素

driver.page_source

获取元素text属性

element.get_attribute(‘text’) Android使用(获取元素的text值)

element.text iOS使用(获取元素的value值)

定位

driver.find_element_by_ios_uiautomation(uia_string)

driver.find_elements_by_ios_uiautomation(uia_string)

driver.find_element_by_android_uiautomator(uia_string)

driver.find_elements_by_android_uiautomator(uia_string)

例:driver.find_element_by_android_uiautomator(‘newUiSelector().text(“竞彩篮球”)’)

driver.find_element_by_accessibility_id(id)(此方法使用的是元素的content-des属性)

driver.find_elements_by_accessibility_id(id)

driver.find_element_by_id(id)

driver.find_elements_by_id(id)(获取的为元素集合使用*[Num]获取子元素)

driver.find_element_by_xpath(xpath)

因为webdriver没有xpath全部的库所有只支持两种格式

1、 self.driver.find_element_by_xpath("//android.widget.EditText[@content-desc=‘请输入登录密码’]")

2、 self.driver.find_element_by_xpath("//android.widget.ListView/android.widget.EditText")

driver.find_elements_by_xpath(xpath)

driver.find_element_by_name(name)

driver.find_elements_by_name(name)

driver.find_element_by_class_name(class)

driver.find_elements_by_class_name(class)

driver.find_element(by,value)

by:“id”、“xpath”、“classname”、 “name”、’-ios uiautomation’、’-android uiautomator’、‘accessibility id’

坐标点击

driver.tap([(x,y)],time)

滑动

driver.swipe(x1,y1,x2,y2,time)

driver.flick(x1,y1,x2,y2)

输入

driver.send_keys()

driver.set_text() Android可用

driver.set_value() iOS可用

如果使用sendkeys不行,可以尝试下面两种方法,我在测试ios输入密码框是自定义的键盘时,用sendkeys输入不了,appium服务端log提示没找到keyboard,后面尝试setvalue可以输入。

截图

driver.get_screenshot_as_file(filename)

获取手机屏幕分辨率

driver.get_window_size()

x =driver.get_window_size()[‘width’]
y = driver.get_window_size()[‘height’]

设置屏幕分辨率

driver.set_window_size(width,height)

获取当前坐标位置

driver.get_window_position()

滚动

driver.scroll(ele1,ele2)

按住element并拖动到另外一个element上

driver.drag_and_drop(ele1,ele2)

缩小

driver.pinch(ele)

放大

driver.zoom(ele)

重启app

driver.reset()

隐藏键盘

driver.hide_keyboard()

发送键盘事件

driver.keyevent(keycode)

按住键盘

driver.press_keycode(keycode)

长按住键盘

driver.long_press_keycode(keycode)

上传文件

driver.push_file(path)

下载文件

driver.pull_file(path)

下载文件夹

driver.pull_folder(path)

app隐藏后台

driver.background_app(time)

安装app

driver.install_app(path)

卸载app

driver.remove_app(app_id)

启动app

driver.launch_app()

关闭app

driver.close_app()

启动activity

driver.start_activity(app_package,app_activity)

打印当前activity

driver.current_activity

锁屏

driver.lock(time)

振动

driver.shake()

打开通知栏(api 18以上)

driver.open_notifications()

获取网络

driver.network_connection

设置网络连接( android only.)

driver.set_network_connection(type)

Value (Alias) |Data | Wifi | Airplane Mode

0 (None) | 0 | 0 | 0
1 (Airplane Mode) | 0 | 0 | 1
2 (Wifi only) | 0 | 1 | 0
4 (Data only) | 1 | 0 | 0
6 (All network on) | 1 | 1 | 0

type参数:

NO_CONNECTION =0
AIRPLANE_MODE = 1
WIFI_ONLY = 2
DATA_ONLY = 4
ALL_NETWORK_ON = 6

fromappium.webdriver.connectiontype import ConnectionType
driver.set_network_connection(ConnectionType.AIRPLANE_MODE)

获取手机输入法(返回list)

driver.available_ime_engines

激活某种输入法

driver.activate_ime_engine(engine)

判断输入法是否激活(返回bool)

driver.is_ime_active()

撤销当前输入法(Android only)

driver.deactivate_ime_engine()

得到当前设置

driver.get_settings()

返回{u’ignoreUnimportantViews’: False}

更新当前设置

driver.update_settings(settings)

settings参数为dict,如{ignoreUnimportantViews: True}

ignoreUnimportantViews参数:调用 uiautomator的函数setCompressedLayoutHierarchy()。由于 Accessibility命令在忽略部分元素的情况下执行速度会加快,这个关键字能加快测试执行的速度。被忽略的元素将不能够被找到,因此这个关键字同时也被实现成可以随时改变的 *设置 (settings ) *。默认值 false

开关定位服务

driver.toggle_location_services()

作者:堕落8
来源:CSDN
原文:https://blog.csdn.net/duoluo9/article/details/77053815
版权声明:本文为博主原创文章,转载请附上博文链接!

  • 5
    点赞
  • 103
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
### 回答1: Appium是一种用于自动化移动应用程序的工具,它支持iOS和Android平台。Java是一种流行的编程语言,可以用于编写Appium自动化脚本。使用Java编写Appium自动化脚本可以帮助测试人员快速、准确地测试移动应用程序的功能和性能。同时,Java还提供了丰富的库和框架,可以帮助测试人员更好地管理测试用例和测试数据。 ### 回答2: Appium是一个流行的开源工具,它允许运行自动化测试脚本以测试移动应用程序。Appium支持多种平台,包括iOS和Android,并且可以使用多种编程语言进行编写测试脚本。Java是一种常用的编程语言,它也可以用于编写Appium iOS自动化测试脚本。 在使用Appium进行iOS自动化测试之前,需要安装和配置必要的软件和工具。首先,需要安装Xcode和Appium桌面客户端。接着,需要安装iOS驱动程序,以便可以使用Appium框架对iOS应用程序进行测试。最后,需要使用Java SDK设置测试环境以编写和运行测试脚本。 要编写Appium iOS自动化测试脚本,需要了解iOS应用程序的UI结构和元素的ID或其他唯一属性。可以使用Appium的UI Automator Viewer工具来查看应用程序的UI结构和属性。此外,需要使用Appium API库来编写测试脚本来实现自动化测试逻辑。这些脚本可以模拟用户在应用程序中执行的具体操作,如点击、滑动、输入等。 当然,编写自动化测试脚本的质量是非常重要的。好的脚本应该易于阅读和理解,逻辑清晰,功能完备,可维护性强,并且能够覆盖尽可能多的应用程序功能和使用场景。建议使用Java编写Appium iOS自动化测试脚本的开发团队应该熟悉Java编程,理解iOS系统和应用程序的UI结构,熟悉Appium API的使用方法。 总之,使用Appium进行iOS自动化测试可以加速测试过程、提高测试覆盖率,并提高应用程序的质量。Java是一个常用的编程语言,可以帮助开发团队编写高质量、易于维护的Appium iOS自动化测试脚本。 ### 回答3: Appium是一款用于移动应用自动化的工具,Appium支持多种编程语言,包括Java。在iOS平台上,Java语言也是多数开发者使用的编程语言之一,因此使用Appium iOS Java自动化脚本可以帮助开发者更轻松地实现移动应用的自动化测试Appium iOS Java 自动化脚本的主要特点包括以下几点: 1. 跨平台支持:Appium支持多个移动操作系统,包括iOS、Android、Windows Phone等。同时,Appium也支持多个编程语言,包括Java、Python、Ruby等。这种跨平台、跨语言的兼容性使得开发者可以在不同移动操作系统和开发环境中轻松地重用和扩展测试代码。 2. 可靠性:Appium使用WebDriver协议进行通信,这意味着它可以使用原生API进行测试,同时也保持了Web开发相关的标准化测试方法。此外,Appium还提供了一些能力强大的元素识别方法,包括XPath、ID、名称、类名以及CSS选择器,这些方法可以帮助开发者更准确地定位移动应用的元素。 3. 易于扩展:在iOS平台上,开发者可以使用Java语言编写Appium脚本来测试移动应用。Java语言是一门很好的语言,它有非常强的面向对象的特征,这使得开发者可以更轻松地对脚本进行扩展。在Java中,开发者可以使用各种测试框架,例如TestNG和JUnit,以及各种第三方库,来帮助实现更复杂的测试需求。 基于以上特点,使用Appium iOS Java自动化脚本可以帮助开发者更加快速地实现自动化测试,提高测试效率同时降低测试成本。此外,使用自动化脚本还可以帮助开发者更好地了解移动应用的性能、稳定性、功能等方面的问题,从而更好地优化产品。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值