界面操作 和 adb 命令

news/2025/2/21 9:21:43/文章来源:https://www.cnblogs.com/ZhiXiaoBbai/p/18724473

界面操作 和 adb 命令

界面操作

click点击

最常见的操作之一,使用 WebElement 对象的 click 方法, 示例代码就讲过,不再赘述

tap点按

WebElement 对象的 tap 方法和 click 类似,都是点击界面。

但是最大的区别是, tap是 针对坐标 而不是针对找到的元素。

为了保证自动化代码在所有分辨率的手机上都能正常执行,我们通常应该使用click方法。

但有的时候,我们难以用通常的方法定位元素, 可以用这个tap方法,根据坐标来点击

既然tap是用坐标来点击界面的,我们怎么知道这个元素的坐标呢?

大家还记得用inspect 查看该元素的属性中,有一个 bounds 属性吗?

它就是表示元素的左上角,右下角坐标的 坐标。

我们还可以使用 UIAutomatorviewer 直接光标移动,看右边的属性提示。

tap 方法可以像这样进行调用

driver.tap([(850,1080)],300)

它 有 两个参数:

  • 第一个参数是个列表,表示点击的坐标。

注意最多可以有5个元素,代表5根手指点击5个坐标。所以是list类型。

如果我们只要模拟一根手指点击屏幕,list中只要一个元素就可以了

  • 第二个参数 表示 tap点按屏幕后 停留的时间。

如果点按时间过长,就变成了长按操作了。

输入

最常见的操作之一, 使用 WebElement 对象的 send_keys 方法, 示例代码就讲过,不再赘述

获取界面文本信息

可以通过 WebElement 对象的 .text 属性获取该对象的文本信息,示例代码就讲过,不再赘述。

滑动

我们做移动app测试的时候,经常需要滑动界面。

怎么模拟滑动呢? WebDriver对象的 swipe方法,就提供了这个功能

比如

driver.swipe(start_x=x, start_y=y1, end_x=x, end_y=y2, duration=800)

前面4个参数 是 滑动起点 和 终点 的x、y坐标。

第5个参数 duration是滑动从起点到终点坐标所耗费的时间。

注意这个时间非常重要,在屏幕上滑动同样的距离,如果时间设置的很短,就是快速的滑动。

比如:一个翻动新闻的界面,快速的滑动,就会是扫动的动作,会导致内容 惯性 滚动很多。

您需要高效学习,找工作? 点击咨询 报名实战班

点击查看学员就业情况

按键

前面的示例代码中已经使用过 调用 press_keycode 方法,就能模拟 按键动作,包括安卓手机的实体按键和 键盘按钮。

如下代码所示

from appium.webdriver.extensions.android.nativekey import AndroidKey

# 输入回车键,确定搜索
driver.press_keycode(AndroidKey.ENTER)

按键的定义,可以参考这篇文档 https://github.com/appium/python-client/blob/master/appium/webdriver/extensions/android/nativekey.py

长按、双击、移动

Appium的 TouchAction 类提供了更多的手机操作方法,比如:长按、双击、移动

参考源代码中的注释 https://github.com/appium/python-client/blob/master/appium/webdriver/common/touch_action.py

比如,下面就是一个长按的例子

from appium.webdriver.common.touch_action import TouchAction
# ...
actions = TouchAction(driver)
actions.long_press(element)
actions.perform()

查看通知栏

  • 打开通知栏

安卓手机, 查看通知栏的动作可以是从屏幕顶端下滑来查看通知。

我们刚刚学过滑动,感兴趣的朋友可以自己试试,关键是要找对滑动的起始点和滑动距离。

更方便的,我们可以使用如下代码,直接打开通知栏

driver.open_notifications()

通知栏里面的元素,自动化的方法 和 前面介绍的App界面元素自动化是一样的。

  • 收起通知栏

收起通知栏,可以使用前面介绍的模拟按键, 发出返回按键 的方法。

adb 命令

这里我们给大家 介绍一个android sdk里面的命令行工具 adb

adb 全程 Android Debug Bridge,这个adb 使用非常广泛。

它可以与 Android 手机设备进行通信,它可进行各种设备操作。

比如: 安装应用和调试应用,传输文件,甚至登录到手机设备上shell的进行访问,就像远程登录一样

这个adb 在 sdk的 platform-tools 目录下面, 请大家确保路径在path环境变量中。

Appium 对anroid的自动化就非常依赖这个adb工具。 执行自动化过程中,有很多内部操作,比如获取设备信息,传送文件到手机,安装apk,启动某些程序等,都是通常这个adb实现的。

 

大家想想我们学习了adb命令,对我们的自动化程序有什么用例呢?

既然这是个命令,就可以使用 Python的 os.system() 或者 subprocess 来自动化调用它,完成我们的各种自动化需求。

比如,我们自动化过程中,可能需要截屏手机,并且下载到指定目录中,就可以在我们的Python程序中这样写

import os
os.system('adb shell screencap /sdcard/screen3.png && adb pull /sdcard/screen3.png')

特别是,还可以通过adb 使用 am(activity manager) 和pm (package manager) 两个工具, 可以启动 Activity、强行停止进程、广播 intent、修改设备屏幕属性、列出应用、卸载应用等。

 

大家可以点击这里查看官方文档中介绍的adb命令

下面我们列出了一些场景的adb命令

查看连接的设备

adb devices -l

列出文件和传输文件

  • 查看目录
adb shell ls /sdcard
  • 上传
adb push wv.apk /sdcard/wv.apk
  • 下载
adb pull /sdcard/new.txt

截屏

adb shell screencap /sdcard/screen.png

截屏后的文件存在手机上,可以使用 adb pull 下载下来

shell

登录到手机设备上shell的进行访问,就像远程登录一样,可用来在连接的设备上运行各种命令。

大家可以 执行一下 adb shell 然后执行各种 安卓支持的 Linux命令,比如 ps、netstat、netstat -an|grep 4724、 pwd、 ls 、cd 、rm 等。

执行quit退出 shell

原文地址:https://www.byhy.net/auto/appium/03/

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

octave画高通滤波、超前,滞后补偿器的幅频响应图

octave代码非常简单:pkg load control s=tf(s); k=0.5; sysG1=k*(0.005*s)/(0.005*s+1); sysG2=k*(0.8*s+1)/(0.1*s+1); sysG3=k*(s+1)/(5*s+1); figure bode(sysG1) figure bode(sysG2) figure bode(sysG3)也可以借助循环,看如下代码:1 pkg load control2 s=tf(s);3 k=0.5;…

frame切换/窗口切换

frame切换/窗口切换 切换到frame点击这里,边看视频讲解,边学习以下内容 请大家点击这里,打开这个链接 如果我们要 选择 下图方框中 所有的 蔬菜,使用css选择,怎么写表达式? 当然,要先查看到它们的html元素特征大家可能会照旧写出如下代码:from selenium import webdriv…

选择元素的基本方法

选择元素的基本方法点击这里,边看视频讲解,边学习以下内容对于百度搜索页面,如果我们想自动化输入 白月黑羽 ,怎么做呢? 这就是在网页中,操控界面元素。 web界面自动化,要操控元素,首先需要 选择 界面元素 ,或者说 定位 界面元素 就是 先告诉浏览器,你要操作 哪个 …

操控元素的基本方法

操控元素的基本方法 点击这里,边看视频讲解,边学习以下内容选择到元素之后,我们的代码会返回元素对应的 WebElement对象,通过这个对象,我们就可以 操控 元素了。 操控元素通常包括 点击元素在元素中输入字符串,通常是对输入框这样的元素获取元素包含的信息,比如文本内容…

CClink IEF Basic设备数据 转EthernetIP项目案例

VFBOX协议转换网关支持PLC,modbus,EthernetIP,Profinet,CCLink,EtherCAT,IEC61850,IEC104,bacnet,DLT645,HJ212,opc ua,opc da,DNP3。目录 1 案例说明 1 2 VFBOX网关工作原理 1 3 准备工作 2 4 网关采集CCLINK IEF BASIC数据 2 5 使用ETHERNETIP转发数据 5 6 案例…

SciTech-EECS-BigDataAIML-NN(神经网络): Forward NN(前向传播算法)

SciTech-EECS-BigDataAIML-NN(神经网络): Forward NN(前向传播算法)

微信小程序-实现微信授权自动登录功能

显示效果 授权前界面授权弹框界面 采用了wx.getUserProfile API申请用户信息,若基础库版本过高,例如3.7.7,则不会显示弹窗,默认为允许状态。若基础库版本降低,例如2.25.4,则会显示弹窗,如下图所示授权后界面前端部分 基础封装 新建utils文件夹,在该文件夹下新建login.j…

为DeepSeek添加本地知识库

为什么要尝试给DeepSeek添加本地知识库呢?作为一个程序员,以前也用过很多AI产品,直到春节DeepSeek爆火,成功在自己的电脑上把AI模型跑起来的时候才真正感受到AI已近在咫尺。未来很多应用和项目都离不开这个工具。或许在我们OA系统中会出现一个AI小助手,我们会问它差旅费报…

SciTech-EECS-Circuits-Digital(数字电路): Latch(锁存器) + Flip/Flop(触发器) + 记忆存储电路

SciTech-EECS-Circuits-Digital(数字电路) Latch(锁存器)Flip/Flop(触发器)记忆存储电路

山石网科阿里云通义灵码,开启研发“AI智造”新时代

近日,山石网科正式宣布全面接入阿里云通义灵码企业专属版,这标志着山石网科在研发智能化、自动化领域迈出重要一步,为研发工作注入强大的AI动力,实现多维度的效率飞跃。近日,山石网科正式宣布全面接入阿里云通义灵码企业专属版,这标志着山石网科在研发智能化、自动化领域…

frame/tab 切换,一些技巧

点击这里,边看视频讲解,边学习以下内容 frame切换 请大家点击这里,打开这个链接 如果我们要 选择 下图方框中 所有的 蔬菜,使用css选择,怎么写表达式? 当然,要先查看到它们的html元素特征大家可能会照旧写出如下代码:from playwright.sync_api import sync_playwrightp…

CSS选择器 定位方法

定位元素的重要性 前面这段代码from playwright.sync_api import sync_playwrightp = sync_playwright().start() browser = p.chromium.launch(headless=False) page = browser.new_page() page.goto("https://www.byhy.net/cdn2/files/selenium/stock1.html")# 输入…