【appium】appium自动化入门之API(上)

news2024/10/8 9:03:10

这个系列预计会讲启动APP—元素定位—初步使用—API命令详解
本系列没提过的知识点也不用急,大家可以点击文末小卡片进群来一起交流

目录
第 2 章 初步使用
2.1 启动 app(淘宝)
前言
2.1.1 下载 aapt
2.1.2 获取 apk 包名
2.1.3 获取 launcherActivity
2.1.4 写脚本
2.1.5 运行 appium
2.1.6 最终代码如下
2.2 元素定位 uiautomatorviewer
前言
2.2.1 启动uiautomatorviewer.bat
2.2.2 连接手机
2.2.3 定位元素
2.2.4 点搜索框
2.2.5 参考代码
2.2.6 元素定位
2.3 Appium Inspector
前言
2.3.1 设置 appium
2.3.2 开启 appium
2.3.3 Ispector Window
2.3.4 查看属性
2.5.5 常见异常
后话
 

第 2 章 初步使用

2.1 启动 app(淘宝)

前言

安装好appium之后,就是启动APP了
那么如何启动 app 呢?
首先要获取包名,然后获取launcherActivity。

获取这两个关键东西的方法很多, 这里就不一一多说,小伙伴们可以各显神通。

这里主要给大家推荐一个 sdk 自带的实用工具 aapt. aapt 即 Android Asset Packaging Tool

在 SDK 的 build-tools 目录下。 该工具可以查看 apk 包名和 launcherActivity,当然还有更多的功能,有兴趣的可以查看相关资料。
 

2.1.1 下载 aapt

  1. 在 android-sdk 里面双击 SDK-manager,下载 buidl-tools

在这里插入图片描述

    2.勾选 build-tools,随便选一个版本,我这里选的是 24 的版本

在这里插入图片描述

    3. 下载完成后,在 D:\androidsdk\android-sdk-windows\build-tools\24.0.0 目录下找到 aapt.exe,将这个路径设置环境变量,添加到 path 下

在这里插入图片描述

    4. 打开 cmd。输入 aapt 出现如下界面,说明环境 OK 了

在这里插入图片描述

 

2.1.2 获取 apk 包名

  1. 将准备测试的 APK 放到 D 盘某个目录,如 D:\test

  2. 打开 cmd,输入指令 aapt dump badging D:\test\xxx.apk(APK 的全名, 如手机淘宝.apk)

  3. 以手机淘宝.apk 为例,如下图

在这里插入图片描述

   4.这里就可以看到 apk 的包名:com.taobao.taobao 注:老司机==可以直接把 apk 放在桌面上,输入指令后拖到 cmd 框 ==

2.1.3 获取 launcherActivity

  1. 接着上一步操作,cmd 屏幕拖到中间 l ==找到 auncherActivity ==
  2. 这里可以看到,淘宝的 launcherActivity 值为 com.taobao.tao.welcome.Welcome

在这里插入图片描述

 

2.1.4 写脚本

  1. platformName:这里是 ==android 的 apk ==
  2. deviceName:手机设备名称,通过 adb devices 查看
  3. platformVersion:android 系统的版本号
  4. appPackage:apk 包名
  5. appActivity:apk 的 launcherActivity

在这里插入图片描述

 

2.1.5 运行 appium

  1. 启动 appium,右上角点三角形按钮,变成正方形,就是启动状态。

在这里插入图片描述

      2. 确认手机连上电脑

在这里插入图片描述

           3.在 pycharm 运行脚本,随后在手机上会弹出安装下面两个软件的提示, 安装后,桌面上       多两个图标。那么恭喜你启动成功!

在这里插入图片描述

 

        4.接着会看到淘宝 app 已经启动啦

2.1.6 最终代码如下

`# coding=utf-8 
 rom appium import webdriver 
 desired_caps = { 
  'platformName': 'Android', 
  'deviceName': '30d4e606', 
  'platformVersion': '5.0',
   # apk 包名 
   'appPackage': 'com.taobao.taobao', 
   # apk 的 launcherActivity 
   'appActivity':
   'com.taobao.tao.welcome.Welcome' 
   } 
   driver = webdriver.Remote(
   'http://127.0.0.1:4723/wd/hub',
   desired_caps)` 

这个地址是怎么来的呢?如下图:

在这里插入图片描述

 这一篇主要学会使用 aapt 工具,然后启动 app 的一个流程
启动 app 后,下一 步就是要定位元素了,定位元素 android sdk 里面用一个自带的 uiautomatorviewer,appium 里面也有一个 Inspector,下篇会详细介绍。

2.2 元素定位 uiautomatorviewer

前言

环境搭建好了,下一步元素定位,元素定位本篇主要介绍如何使用uiautomatorviewer,通过定位到页面上的元素,然后进行相应的点击等操作.

uiautomatorviewer 是 android-sdk 自带的一个元素定位工具
非常简单好用, 使用uiautomatorviewer,你可以检查一个应用的 UI 来查看应用的布局和组件以 及相关的属性。
 

2.2.1 启动uiautomatorviewer.bat

  1. 打开目录 D:\androidsdk\android-sdk-windows\tools

在这里插入图片描述

    2. 双击启动,启动之后出现如下界面

在这里插入图片描述

  3.如果不喜欢双击启动的话,也可以在 cmd 里面通过指令启动 先 cd 到 tools 目录下,然后输入 uiautomatorviewer.bat 回车后启动服务

在这里插入图片描述

 

2.2.2 连接手机

  1. cmd 打开输入 adb devices,确认手机已连上
  2. 打开手机淘宝页面,让屏幕处于点亮状态
  3. 点左上角安卓机器人按钮 Devices Screenshot 按钮刷新页面

在这里插入图片描述

 

2.2.3 定位元素

  1. 移动鼠标到需要定位的元素上,如搜索输入框

在这里插入图片描述

 

     2.右下角可以看到元素对应的属性
        text:搭配新宠不能缺
        resource-id:com.taobao.taobao:id/home_searchedit class:android.widget.EditText

2.2.4 点搜索框

  1. 前面一骗启动 app 后,休眠五秒,等待页面加载完成
  2. 通过 id 来定位到搜索框,然后点击

在这里插入图片描述

 

2.2.5 参考代码

 # coding=utf-8 
 from appium import webdriver 
 import time 
 desired_caps = {
  'platformName': 'Android', 
  'deviceName': '30d4e606', 
  'platformVersion': '5.0', 
  'appPackage': 'com.taobao.taobao', 'appActivity': 
  'com.taobao.tao.welcome.Welcome', 
  } 
  driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub', desired_caps) 
 # 休眠五秒等待页面加载完成 
time.sleep(5)
driver.find_element_by_id("com.taobao.taobao:id/home_searchedit").cli ck()

2.2.6 元素定位

(此处敲黑板,做笔记!!!)

  1. appium 的 webdriver 提供了 11 种元素定位方法,在 selenium 的基础 上扩展了三个,可以在 pycharm 里面输入 driver.find_element_by 然后会自动匹配出来

在这里插入图片描述

 

   2.多的三种如下,在后面的会详细介绍

  • driver.find_element_by_accessibility_id()
  • driver.find_element_by_android_uiautomator()
  • driver.find_element_by_ios_uiautomation()(第三个是 ios 的可以暂时不用管)

uiautomatorviewer 是 android sdk 自带的,下面将讲另一个Inspector
 

2.3 Appium Inspector

前言

Appium Inspector 是== appium 自带的一个元素定位工具==。
appium Inspector 的winddows 版本不太好用,但是 Mac 上的功能还是很强大的,一般 mac 上用的比较多。

2.3.1 设置 appium

  1. 先不要启动 appium
  2. 点开 android setting 界面(机器人图标)
  3. 勾选 Application Path,添加被测 app 的路径
  4. Devices name 处添加设备名称(adb devices 查看到的)

在这里插入图片描述

 (敲黑板,记重点:通过这种方法也可查看到 apk 的包名和 Launch Activity)

在这里插入图片描述

 

2.3.2 开启 appium

  1. 手机确保连接电脑(adb devices 查看)
  2. 点 appium 右上角三角形图标,会启动服务
  3. 这时候可以看到手机上安装淘宝应用,并会启动淘宝
  4. 点 appium 右上角的搜索图标
  5. 点Inspector Window 界面的 Refresh 按钮刷新界面

2.3.3 Ispector Window

  1. 手机上打开需要单位元素的界面,然后点 Refresh 按钮刷新
  2. 左边菜单树,可以挨个点开
  3. 如果想单位界面上的“是”和“否”按钮,从菜单树就可以看到这两个 元素的结构

2.3.4 查看属性

  1. 选中左侧菜单树对应的元素,在右下角查看对应属性

在这里插入图片描述

 

2.5.5 常见异常

  1. 在使用过程中,你会发现经常会报以下这个错误
  2. 每次启动都会给你手机上重新安装一次应用
  3. 并且不能用鼠标指定某个元素,没有uiautomatorviewer 使用方便

后话

本次的文章实际代码可能有点多,大家出现错误的话可以多对应几遍,实在找不到错误可以点击文末小卡片进群,来这里提问,会有大佬帮忙解答的。

在这里插入图片描述

 

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

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

相关文章

Linux之通配符、引号的使用

目录 Linux之通配符、引号的使用 通配符 定义 范围 用法及含义 案例 引号使用 案例 Linux之通配符、引号的使用 通配符 定义 通配符是一种特殊语句,主要有星号(*)、问号(?)等表示,用来模糊搜索文件,当查找目录或文件时,…

Gin微服务框架_golang web框架_完整示例Demo

Gin简介 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站 Gin是一个golang的微框架,封装比较优雅,API友好,源码注释比较明确,具有快速灵活&…

Spark入门

Spark概述 1.1 什么是Spark 回顾:Hadoop主要解决,海量数据的存储和海量数据的分析计算。 Spark是一种基于内存的快速、通用、可扩展的大数据分析计算引擎。 1.2 Hadoop与Spark历史 MR是进程模型,ResourceManager NodeManager都是进程&…

107-Spring的底层原理(上篇)

Spring的底层原理 之前说明的都是Spring的应用(64章博客开始(包括其后面的相关博客)),现在来说明他为什么可以那样做 在说明之前,这里需要对64章博客中的spring的了解需要再次的说明: Spring…

Unity中UI方案。IMGUI、UIElement、UGUI、NGUI

引言 unity中有很多ui方案,各种方案有什么优势劣势,这里一一列举一下,知识扩充一下。 UI方案适用范围IMGUI仅用于Editor扩展,或运行时DebugUIElement可用于发布运行时和EditorUGUIRuntime,两大主流 UI 解决方案之一NG…

python语法-MySQL数据库(综合案例:读取文件,写入MySQL数据库中)

python语法-MySQL数据库 综合案例:读取文件,写入MySQL数据库中 (项目数据见文章末参考内容) 解析: sql代码如下: create database pysql charset utf8;use pysql;select database();create table orders…

华为OD机试真题 JavaScript 实现【求小球落地5次后所经历的路程和第5次反弹的高度】【牛客练习题 HJ38】

一、题目描述 假设一个球从任意高度自由落下,每次落地后反跳回原高度的一半; 再落下, 求它在第5次落地时,共经历多少米?第5次反弹多高? 数据范围:输入的小球初始高度满足 1 \le n \le 1000 \1≤n≤1000 ,且保证是一…

今年十八,期末速刷(操作系统篇1)

马上期末了,想问问各位期末考几科 我家学校网安考7科呜呜呜 只能出点文章一把梭了。。。 争取只挂一科 先来先算法(FCFS) 算法思想 我今天学FCFS只有一个要求 公平、公平 还是tnd公平 算法规则 按照进程的先后顺序来进行服务。 是否…

Web自动化测试:WebDriverWait元素等待和全局设置

由于现在部分web应用加载方式的选择,页面会需要一定时间逐渐加载完毕,也就是说有的页面元素先加载出来,有的元素后加载出来。如果直接定位所查找的元素的话,可能会由于此元素尚未加载完毕找不到元素从而报错,由于网络不…

leetcode 647.回文子串

题目描述 给你一个字符串 s ,请你统计并返回这个字符串中 回文子串 的数目。 回文字符串 是正着读和倒过来读一样的字符串。 子字符串 是字符串中的由连续字符组成的一个序列。 具有不同开始位置或结束位置的子串,即使是由相同的字符组成,也会…

【干货】有效的项目绩效管理评估,能成为组织成长的引擎

是谁已经开始在写年中总结了? 对于这件事,项目经理们肯定不会缺席,毕竟每周、每月、每个季度都少不了项目报告。这两天项目经理小刘,还在办公室吐槽项目绩效的数据实在太差了,询问如何能巧妙美化数据,这是…

算法学习day20

文章目录 513.找树左下角的值递归迭代 112 .路径总和递归迭代 113.路径总和II递归 106.从中序与后序遍历序列构造二叉树递归 105.从前序与中序遍历序列构造二叉树卡尔递归版本递归优化 总结 513.找树左下角的值 给定一个二叉树的 根节点 root,请找出该二叉树的 最底…

K8S从入门到精通之基本组件介绍

文章目录 0.前言k8s 的dashboard基本组件活动图 1. 基本概念1.1. kube-apiserver1.2. etcd1.3. kube-scheduler1.4. kube-controller-manager1.5. kubelet1.6. kube-proxy1.7. coredns:1.8. Container Runtime1.9. Ingress Controller1.10. Storage Plugin1.11. Das…

原点安全携“金融机构消费者个人信息保护解决方案”亮相 2023 中国金融数字化转型发展大会

6 月 7 日,由中国金融电子化集团有限公司、南京市建邺区人民政府、中国人民银行南京分行主办,主题为“数驱转型 智创未来”的「2023 中国金融数字化转型发展大会暨第十三届中国城市商业银行信息化发展创新座谈会」于南京国际博览中心隆重召开。 本次会议…

使用POI实现JAVA操作Excel

Apache POI POI提供API给JAVA程序对Microsoft Office格式档案读和写的功能 POI工具介绍 POI 是用Java编写的免费开源的跨平台的 Java API,Apache POI提供API给Java程式对Microsoft Office格式档案读和写的功能。主要是运用其中读取和输出excel的功能。 POI官网地…

每日一练 | 华为认证真题练习Day57

1、两台路由器通过PPP链路互连,管理员在两台路由器上配置了OSPF,且运行在同一个区域中,如果它们的Router ID相同,则下面描述正确的()。 A. 两台路由器将会建立正常的完全邻居关系 B. 两台路由器将不会互相…

看看苹果如何平衡Vision Pro性能和功耗

众所周知,Quest 2极为严格的控制SoC运行频率,目的就是保证整机的“散热性能”,说白了就是发热不能严重、风扇噪音不能大。这也是VR头戴设备中降低用户体验的两个关键指标。 对于Quest 2很直接的一个优势就是,用户大多时候听不到狂…

Javaweb学习路线(3)——SpringBoot入门、HTTP协议与Tomcat服务器

一、SpringBoot入门 &#xff08;一&#xff09;第一个Springboot案例 1、创建Springboot工程&#xff0c;添加依赖。 2、定义类&#xff0c;添加方法并添加注释 3、运行测试。 pom.xml&#xff08;框架自动生成&#xff09; <?xml version"1.0" encoding&quo…

linux上安装es、Kibana、ik分词

基本概念 ES是什么&#xff1f;我们可以把ES比作一个Mysql数据库&#xff0c;同样用来存储数据&#xff0c;不过比Mysql提供了更多的搜索功能,例如分词搜索&#xff0c;关联度搜索等&#xff0c;而且搜索速度也不是同一级别的&#xff0c; ES能够实现百万数据/秒的查询速度。接…