Appium+python自动化(七)- 初识琵琶女Appium(千呼万唤始出来,犹抱琵琶半遮面)- 上(超详解)

news2024/11/29 0:36:11

简介

  “千呼万唤始出来,犹抱琵琶半遮面”,经过前边的各项准备工作,终于才把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架构)

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

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

琵琶女: 下面奴家把时间交还给宏哥,让宏哥继续来引荐奴家。

宏哥:好了各位看官、小伙伴们和童鞋们不要再盯着美女了,把头往宏哥这边转一转,把目光往宏哥这边汇聚一下。

宏哥:哎哎哎,说你了,把头转到宏哥这边,听宏哥给您慢慢道来,哎哎哎,对!不要看别人说的就是你。

宏哥:好了,你们都这样,宏哥就不废话了,还是把头转回去。直接开始正题,进行移动端自动化测试实战(琵琶弹奏-十面埋伏)

二、奴家实战技艺(以真机<琵琶>为例)

各位看官这里是给大家列举的一些琵琶女的指法(命令)

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 activities

adb shell pm list packages:列出所有的包名。

adb shell dumpsys package:列出所有的安装应用的信息

adb shell dumpsys package com.android.XXX:查看某个包的具体信息

adb shell dumpsys activity | grep mFocusedActivity:查看当前resume的是哪个activity

adb logcat | grep ActivityManager:查看当前正在运行的Activity

adb logcat | grep Displayed:查看当前正在运行的Activity

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

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
 2 # 1.先设置编码,utf-8可支持中英文,如上,一般放在第一行
 3 
 4 # 2.注释:包括记录创建时间,创建人,项目名称。
 5 '''
 6 Created on 2019-6-19
 7 @author: 北京-宏哥   QQ交流群:707699217
 8 Project:初始琵琶女appium
 9 '''
10 # 3.导入模块
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
 2 # 1.先设置编码,utf-8可支持中英文,如上,一般放在第一行
 3 
 4 # 2.注释:包括记录创建时间,创建人,项目名称。
 5 '''
 6 Created on 2019-6-19
 7 @author: 北京-宏哥   QQ交流群:707699217
 8 Project:学习和使用python代码appium+pycharm+连接夜神模拟器
 9 '''
10 # 3.导入模块
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:62001和nox_adb.exe connect 127.0.0.1:62001的效果是一样的,前提就是你已经配置好系统变量和解决了版本冲突。

2、好了有关appium的总结就到这里了,欲知后事如何,且听下回分解。嘿嘿!!!

 -每天学习一点,今后必成大神-

往期推荐:

Appium自动化系列,耗时80天打造的从搭建环境到实际应用精品教程测试

Python接口自动化测试教程,熬夜87天整理出这一份上万字的超全学习指南

Python+Selenium自动化系列,通宵700天从无到有搭建一个自动化测试框架

Java+Selenium自动化系列,仿照Python趁热打铁呕心沥血317天搭建价值好几K的自动化测试框架

Jmeter工具从基础->进阶->高级,费时2年多整理出这一份全网超详细的入门到精通教程

Fiddler工具从基础->进阶->高级,费时100多天吐血整理出这一份全网超详细的入门到精通教程

Pycharm工具基础使用教程

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1341297.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

功能测试知识超详细总结

一、测试项目启动与研读需求文档 &#xff08;一&#xff09; 组建测试团队 1、测试团队中的角色 2、测试团队的基本责任 尽早地发现软件程序、系统或产品中所有的问题。督促和协助开发人员尽快地解决程序中的缺陷。帮助项目管理人员制定合理的开发和测试计划。对缺陷进行跟…

远程桌面的3389端口如何修改

远程桌面是windows的一个功能组件&#xff0c;通过这个组件可以远程控制某台电脑的电脑桌面&#xff0c;使用过windows远程桌面的人都清楚&#xff0c;大家都知道3389是远程桌面的默认端口号&#xff0c;如果将这个端口在路由器中映射出去&#xff0c;将极大的增加服务器的风险…

.NET Core NPOI导出复杂Excel

一、引入NPOI NuGet&#xff1a; NPOI GitHub源码地址&#xff1a; GitHub - tonyqus/npoi: a .NET library that can read/write Office formats without Microsoft Office installed. No COM, no interop. 版本说明&#xff1a; NPOI 2.4.1 &#xff08;注意不同版本可能使用…

elasticsearch-hadoop.jar 6.8版本编译异常

## 背景 重新编译 elasticsearch-hadoop 包&#xff1b; GitHub - elastic/elasticsearch-hadoop at 6.8 编译 7.17 版本时很正常&#xff0c;注意设置下环境变量就好&#xff0c;JAVA8_HOME/.... 编译 6.8 版本时&#xff08;要求jdk8 / jdk9&#xff09;&#xff0c;出现…

经典目标检测YOLO系列(一)YOLOV1的复现(1)总体架构

经典目标检测YOLO系列(一)实现YOLOV1网络(1)总体架构 实现原版的YOLOv1并没有多大的意义&#xff0c;因此&#xff0c;根据《YOLO目标检测》(ISBN:9787115627094)一书&#xff0c;在不脱离YOLOv1的大部分核心理念的前提下&#xff0c;重构一款较新的YOLOv1检测器&#xff0c;来…

毕业/课程设计——基于STM32的智能灯光控制系统(物联网、智能家居、手机APP控制、语音控制)

文章首先介绍本系统所包含的功能&#xff0c;主要包含六方面功能&#xff0c;之后逐步分享开发过程&#xff0c;其流程如下&#xff1a;点亮灯带&#xff08;三极管&#xff09;→调节灯光亮度&#xff08;PWM&#xff09;→为系统添加远程控制功能→为系统添加语音识别功能→添…

消防数据监测可视化大屏:守护城市安全的智慧之眼

在数字化时代&#xff0c;数据已经成为决策的关键。特别是在消防领域&#xff0c;快速、准确的数据分析对于及时应对火情、挽救生命财产具有不可估量的价值。为此&#xff0c;消防数据监测可视化大屏应运而生&#xff0c;成为城市安全的守护者。 一、什么是消防数据监测可视化大…

云轴科技海通期货 | 一云多芯信创云平台方案入选上海金融科技优秀解决方案

近日&#xff0c;在上海金融科技产业联盟主办的第五届上海金融科技国际论坛上&#xff0c;上海市地方金融监督管理局、中国人民银行上海总部共同发布了2023年度上海金融科技优秀应用场景及解决方案入选名单&#xff0c;其中云轴科技ZStack联合海通期货申报的“一云多芯信创云平…

centos下docker安装Rocketmq总结,以及如何更换mq端口

默认你已经装好了docker哈 安装docker-compose sudo curl -L https://github.com/docker/compose/releases/download/1.25.1-rc1/docker-compose-uname -s-uname -m -o /usr/local/bin/docker-composechmod x /usr/local/bin/docker-composedocker-compose --version成功打印…

MidJourney笔记(9)-daily_theme-docs-describe

/daily_theme 切换 #daily-theme 频道更新的通知。 但我发现在对话框那里,是没有这个命令的: 但官网是有介绍,不知道是不是版本问题还是这个命令已经无效。 但后来,我发现这个命令是要在Midjourney服务对话框那里才有,在我们后面添加的Mid

Redis布隆过滤器BloomFilter

&#x1f44f;作者简介&#xff1a;大家好&#xff0c;我是爱吃芝士的土豆倪&#xff0c;24届校招生Java选手&#xff0c;很高兴认识大家&#x1f4d5;系列专栏&#xff1a;Spring源码、JUC源码、Kafka原理、分布式技术原理、数据库技术&#x1f525;如果感觉博主的文章还不错的…

Apache OFBiz RCE漏洞复现(CVE-2023-51467)

0x01 产品简介 Apache OFBiz是一个电子商务平台,用于构建大中型企业级、跨平台、跨数据库、跨应用服务器的多层、分布式电子商务类应用系统。 0x02 漏洞概述 漏洞成因 该系统的身份验证机制存在缺陷,可能允许未授权用户通过绕过标准登录流程来获取后台访问权限。此外,在…

DRF从入门到精通六(排序组件、过滤组件、分页组件、异常处理)

文章目录 一、排序组件继承GenericAPIView使用DRF内置排序组件继承APIView编写排序 二、过滤组件继承GenericAPIView使用DRF内置过滤器实现过滤使用第三方模块django-filter实现and关系的过滤自定制过滤类排序搭配过滤使用 三、分页组件分页器一&#xff1a;Pagination&#xf…

python-39-flask+nginx+Gunicorn的组合应用

flask nginx Gunicorn 王炸 1 flasknginxgunicornsupervisor 1.1 myapp.py from flask import Flask app Flask(__name__)app.route("/") def test_link():return "the link is very good"if __name__"__main__":app.run()默认是5000端口…

Java学习——设计模式——创建型模式1

文章目录 创建型模式单例饿汉式懒汉式存在的问题 工厂方法简单工厂模式工厂方法模式抽象工厂模式 创建型模式 关注点是如何创建对象&#xff0c;核心思想是要把对象创建和使用相分离&#xff0c;这样两者能相对独立地变换 包括&#xff1a; 1、工厂方法&#xff1a;Factory Met…

深信服AF防火墙配置SSL VPN

防火墙版本&#xff1a;8.0.85 需提前确认防火墙是是否有SSL VPN的授权&#xff0c;确认授权用户数量 1、确认内外网接口划分 2、网络→SSL VPN&#xff0c;选择内外网接口地址 3、SSL VPN→用户管理→新增一个SSL VPN的用户 4、新增L3VPN资源&#xff0c;类型选择Other&…

在用Vite开发时静态图片放哪里,才能保证显示,不出现找不到资源

在用Vite开发时静态图片放哪里 在用Vite开发时静态图片&#xff08;资源&#xff09;放哪里呢 &#xff1f; 如果你想直接全部显示的那么请你把静态资源放到public目录下面&#xff0c;这样你一打包所有的静态资源都会放到打包根目录下。但是此时你在项目中引用的地址一定要是…

微信小程序登录(生成token,token校验)——后端

写在前面&#xff1a;如果想自己开发微信小程序&#xff0c;需要先到微信小程序官方平台注册账号&#xff0c;地址为&#xff1a;https://mp.weixin.qq.com/wxopen/waregister?actionstep1. 登录流程 其中&#xff0c;开发者服务器就是我们的后端服务器&#xff0c;微信接口服…

编程笔记 GOLANG基础 003 Go语言开发环境搭建

编程笔记 GOLANG基础 003 Go语言开发环境搭建 一、安装VSCODE二、安装GO语言主程序 Golang的学习从开发环境搭建开始。本例记录的是WINDOWS平台下使用VSCODE做为开发工具的搭建过程。网上查到的资料都是以前版本的方法&#xff0c;新版Golang发生了一些变化。各位参数环境搭建时…

【c++】

1.定义自己的命名空间myspace&#xff0c;并在myspace中定义一个字符 #include <iostream> #include <cstring> //<><string.h> #include <cstdio> using namespace std; //3.定义自己的命名空间myspace&#xff0c;并在myspace中定义一个字符…