当前位置: 首页 > article >正文

Appium+python自动化(七)- 认识Appium- 上

简介

 经过前边的各项准备工作,终于才把appium搞定。

一、appium自我介绍    

       appium是一款开源的自动化测试工具,可以支持iOS和安卓平台上的原生的,基于移动浏览器的,混合的应用(APP)。

1、 使用appium进行自动化测试的好处

       在不同平台中使用了标准的自动化APIs,所以在跨平台时,不需要重新编译或者修改自己的应用。

       支持Selenium WebDriver支持的所有语言,如java、Object-C、JavaScript、Php、Python、Ruby、C#、Clojure,或者Perl语言,更可以使用Selenium WebDriver的Api。Appium支持任何一种测试框架.Appium实现了真正的跨平台自动化测试。主要介绍Python的用法

2、Appium架构

      appium是一个用Node.js编写的HTTP server,它创建、并管理多个 WebDriver sessions 来和不同平台交互,如 iOS ,Android等等. 

      appium开始一个测试后,就会在被测设备--手机上启动一个 server ,监听来自 Appium server的指令. 每种平台像 iOS 和Android都有不同的运行、和交互方式。所以appium会用某个桩程序“侵入”该平台,并接受指令,来完成测试用例的运行。

二、appium实战技艺(以真机<appium>为例)

这里是给大家列举的一些appium的指法(命令)   

    aapt dump badging D:\XXX.apk  获取安装包的所有信息adb devices(查看手机是否连接到电脑)adb shell pm list packages:列出所有的包名,找到所查看包的包名。adb shell dumpsys package com.android.XXX:查看某个包的具体信息其它:adb devices:查看Android设备是否连接到电脑。adb shell dumpsys activity:查看当前运行的是哪个activity,运行的一些进程等adb shell dumpsys activity activitiesadb shell pm list packages:列出所有的包名。adb shell dumpsys package:列出所有的安装应用的信息adb shell dumpsys package com.android.XXX:查看某个包的具体信息adb shell dumpsys activity | grep mFocusedActivity:查看当前resume的是哪个activityadb logcat | grep ActivityManager:查看当前正在运行的Activityadb logcat | grep Displayed:查看当前正在运行的Activity

1、 连接真机或者模拟器 -- 这里是appium和手机如何接触连接

1)连接手机时注意选择手机的开发者模式,cmd打开命令行窗口,输入adb devices获取到设备的deviceName

2)启动模拟器,连接模拟器AVD(Google自带),cmd打开命令行窗口,输入adb devices获取到设备的deviceName

3)启动模拟器,连接夜神模拟器,要注意先输入  nox_adb.exe connect 127.0.0.1:62001(相当于插入数据线),再继续,输入adb devices

2、获取Activity

1)cmd打开命令行窗口,输入aapt dump badging D:\XXX.apk(xxx指安装包名,D:\是指路径)直接查看需要测试app安装包的具体信息。

2)标记的就是包名,继续往下拖拽,可以找到activity的信息。

       这里的红圈就可以看到activity的信息。这两个值,在appium脚本中都需要提前获取到,所以需要提前介绍这个获取方法。如果你觉得在cmd里面不好看,你可以把cmd信息导出到一个txt文件,例如 aapt dump badging shoujibaidu.apk > 123.txt 回车后,会在桌面生成一个123.txt文件,你可以打开,通过查询找到这些信息。通过上面的方法,只要我们有android SDK环境,那么我们就可以获取到任意一个包的包名和Activity信息。

3、启动Appium 

     1)  双击桌面上的appium图标打开,点击Android Settings进行设置。

2)将上方获取到的真机的deviceName填入 ,选择platformName和platformVersion

 3)将服务的session配置成可重写(非必要的配置)

4)配置好后,点击右上角的启动按钮进行启动即可。

5)启动成功,下一步该写代码了。

4、将上方得到的设备和安装包信息写入脚本中

1 # coding=utf-8
10 # 1.导入模块
11 from appium import webdriver
12 import time
13 desired_caps = {}
14 desired_caps['platformName'] = 'Android'   #android的apk还是IOS的ipa
15 desired_caps['platformVersion'] = '8.0'  #android系统的版本号
16 desired_caps['deviceName'] = 'emulator-5554'    #手机设备名称,通过adb devices  查看
17 desired_caps['appPackage'] = 'com.taobao.taobao'  #apk的包名
18 desired_caps['appActivity'] = 'com.taobao.tao.welcome.Welcome'  #apk的launcherActivity
19 # desired_caps['unicodeKeyboard'] = True   #使用unicodeKeyboard的编码方式来发送字符串
20 # desired_caps['resetKeyboard'] = True   #将键盘给隐藏起来

5、查找app定位元素

1)启动Android SDK中的一个神器可以查找app的定位元素进行脚本的编写。在Android SDK中的tools中有一个uiautomatorviewer.bat,如下图所示:

2)点击uiautomatorviewer.bat进行启动,左上角一共四个按钮,作用分别是打开本地文件(open)、Device Screenshot (uiautomator dump)dump页面、dump压缩格式的页面、保存;启动后点击左上角第三个图标进行真机界面的呈现。

3)选择设备模拟器或者真机

4)第一次连接会比较慢,耐心等候一下,连接好后以后就快了。我这里以百度界面为例。

这是连接夜神模拟器后的界面显示。这样就可以根据id、class、text等定位元素进行定位了。

1 driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)
2 driver.find_element_by_id("index-kw").click()
3 driver.find_element_by_id("index-kw").clear()
4 driver.find_element_by_id("index-kw").send_keys('appium测试')
5 
6 7 driver.find_element_by_id("index-bn").click()
8 
9 driver.quit()

三、以淘宝APP为实例

1、实例代码

2、代码运行结果

3、appium运行结果

4、模拟器运行结果

5、参考代码

1 # coding=utf-8
10 # 1.导入模块
11 from appium import webdriver
12 import time
13 desired_caps = {}
14 desired_caps['platformName'] = 'Android'   #android的apk还是IOS的ipa
15 desired_caps['platformVersion'] = '8.0'  #android系统的版本号
16 desired_caps['deviceName'] = '127.0.0.1:62001'    #手机设备名称,通过adb devices  查看
17 desired_caps['appPackage'] = 'com.taobao.taobao'  #apk的包名
18 desired_caps['appActivity'] = 'com.taobao.tao.welcome.Welcome'  #apk的launcherActivity
19 #desired_caps['unicodeKeyboard'] = True   #使用unicodeKeyboard的编码方式来发送字符串
20 #desired_caps['resetKeyboard'] = True   #将键盘给隐藏起来
21 driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub', desired_caps) #启动服务器地址,后面跟的是手机信息
22 # 休眠五秒等待页面加载完成
23 time.sleep(5)
24 
25 driver.find_element_by_id("com.taobao.taobao:id/home_searchedit").click()
26 time.sleep(4)
27 driver.find_element_by_id("com.taobao.taobao:id/searchEdit").clear()
28 time.sleep(3)
29 driver.find_element_by_id("com.taobao.taobao:id/searchEdit").send_keys("琵琶")
30 time.sleep(2)
31 driver.find_element_by_id("com.taobao.taobao:id/searchbtn").click()
32 
33 # driver.quit()

至此运行脚本即可进行自动化测试。

小结

1、adb.exe connect 127.0.0.1:62001nox_adb.exe connect 127.0.0.1:62001的效果是一样的,前提就是你已经配置好系统变量和解决了版本冲突。

http://www.lryc.cn/news/2396351.html

相关文章:

  • 数据中心双活架构解决方案
  • YOLOv5 详解:从原理到实战的全方位解析
  • 模块联邦:更快的微前端方式!
  • 前端基础学习html+css+js
  • 手机打电话时将对方DTMF数字转为RFC2833发给局域网SIP坐席
  • TCP三次握手/四次握手-TCP/IP四层模型-SSL/TLS-HTTP-HTTPS
  • SAP Business One:无锡哲讯科技助力中小企业数字化转型的智慧之选
  • 【Ubuntu远程桌面】
  • ⚡ Linux 系统安装与配置 Vim 编辑器(包括 Vim 插件管理器)
  • 小型语言模型:为何“小”才是“大”?
  • 雪花算法:分布式ID生成的优雅解决方案
  • 针对PostgreSQL中pg_wal目录占用过大的系统性解决方案
  • git push Git远端意外挂断
  • python学习day34
  • 秋招Day12 - 计算机网络 - 网络综合
  • QT-JSON
  • IP 风险画像技术略解
  • 秋招Day12 - 计算机网络 - 基础
  • 【网络安全】——Modbus协议详解:工业通信的“通用语言”
  • MySQL 数据库备份与恢复利器:Percona XtraBackup 详解
  • 【GlobalMapper精品教程】095:如何获取无人机照片的拍摄方位角
  • 小提琴图绘制-Graph prism
  • 写作即是生活
  • 进阶知识:Selenium底层原理深度解析
  • 基于 Flickr30k-Entities 数据集 的 Phrase Localization
  • [GHCTF 2025]SQL???
  • 【科研绘图系列】R语言绘制GO term 富集分析图(enrichment barplot)
  • JavaScript 性能优化实战指南
  • 达梦数据库:同1台服务器如何启动不同版本的DMAP服务
  • Laravel单元测试使用示例