Appium基础 — 模拟手势点击坐标

news2024/12/25 23:51:37

1、模拟手势点击坐标

在定位元素的时候,你使出了十八班武艺还是定位不到,怎么办呢?(面试经常会问)
那就拿出绝招:点击元素所在位置的坐标。(坐标定位)

详细说明:

如下图定位"去看看"这个元素,除了坐标属性,其他没有可用于定位的属性信息了。这个时候就需要用坐标来进行定位点击了。

下图中可以看到右侧bonds属性:[374,831][654,906],我的理解是第一个坐标是红框框长方形的左上角坐标,第二个坐标是红框框长方形的右下角坐标,所以如果我想要点击红框框的内容,只要【374654,831906】之间的任意一个坐标都可以用。
 

2、tap()用法

tap()方法并不是我们之前说过的TouchAction类中的tap()方法,该tap()方法是模拟手势触摸的方法。

tap()方法介绍:

# 可模拟手指点击(最多五个手指),可设置按住时间长度(毫秒) :
tap(self, positions, duration=None)

参数Args: 
    positions : list(列表)类型,里面对象是元组,最多五个。
        如:[(100, 20), (100, 60)],
        元组中一个元素表示一个坐标, 元组中最多可有5个坐标。   
    duration : 持续时间,单位毫秒,如:500 
    
# 调用方式
driver.tap([(100, 20), (100, 60), (100, 100)], 500)

3、练习

"""
1.学习目标
    熟悉tap方法使用,当元素没有任何明确属性的时候,可以使用,来定位元素,
2.操作步骤
    2.1 熟悉tap方法:触摸,不同于TouchAction中的tap方法
    2.2 调用方式
        driver.tap(positions,duration=None)
    2.3 说明:
        driver.tap([坐标,最多5个坐标],持续时间)
        参数:
            --positions 坐标 列表格式[(x,y),(x,y),(x,y)]
                列表中每个元组表示一个坐标
            --duration 持续时间

3.需求
    设置app中使用tap方法点击"通知"选项
"""

# 1.导入appium和TouchAction
import time
from appium import webdriver

# 2.创建Desired capabilities对象,添加启动参数
desired_caps = {
    "platformName": "Android",  # 系统名称
    "platformVersion": "7.1.2",  # 系统版本
    "deviceName": "127.0.0.1:21503",  # 设备名称
    "appPackage": "com.android.settings",  # APP包名
    "appActivity": ".Settings"  # APP启动名
}

# 3.启动APP
driver = webdriver.Remote("http://127.0.0.1:4723/wd/hub", desired_caps)

# 4.操作APP
# 使用tap方法点击设置app页面中"通知"选项,
# 通过元素定位工具UI Automator Viewer,可以知道"通知"的坐标范围[108,894][720,965]
# x轴 范围  108--720
# y轴 范围  894--965
# 页面等待
driver.wait_activity(".Settings", 10)

# 点击"通知"选项
driver.tap([(120, 900)], 3000)

# 注:持续时间有和没有,在效果上区别不是很大。

# 5.关闭APP
time.sleep(3)
driver.quit()

提示:

因为之前一直用的click()方法进行点击,click()方法是定位元素后才进行点击操作的。

而页面中的坐标信息是一直存在的,所以tap()方法会直接运行,所以脚本执行的时候,没有点击效果,是因为执行坐标定位点击操作的时候,元素还没有出现。

因此tap()触摸方法前面务必加上延时或者判断!!!

4、弊端

通过坐标定位是元素定位的下下策,实在没办法才用这个,另外如果换了其他手机,分辨率就会不一样,这个坐标就不能写死了,得算出所在屏幕的比例。

注意: 不到万不得已不要用tap()触摸方法,因为不同手机分辨率不同,同样的元素在不同手机的位置不同。

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

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

相关文章

OpenWrt无法打开国内网站的解决方法

最近小半个月以来根据lean和lieno源码编译的OpenWrt固件在使用了smartdns之后会出现无法打开国内网页的情况。 诡异的是, 重启防火墙之后, 能正常访问百度等国内网站, 但是, 过上一段时间, 就又不行了。 在经过近一个…

示波器应用(三)

示波器可做什么? 基础材质检查环境搭建校验 相似材质之间的细微差异分析 场景调光依据/竞品分析 定位曝光、色相问题 风格化调色监视 LUTs检查 材质检查 单看上图的分量示波器,仔细想一想这张图是什么色相? 公布答案 分量示波器rgb模…

电子采购方案:构建高效智能数字化采购

过去几十年,公用事业行业发生了重大变化。能源需求的转变导致企业利润率的波动,但不是运营成本的波动。 许多公用事业公司通过后勤部门流程自动化来削减成本,比如招采流程自动化。 在招采活动中,人工招采会产生盲点。由于公共事业…

Vue(一)

1.Vue简介 将html/css/js封装到vue里,形成一个组件,改动某个组件里内容不会影响另一个 要实现将左边数据变成li的形式放进容器里面,传统实现方式: vue形式编码简易实现:指令实现 Diff会跟原来的比较,跟原来一样的会直接…

设备管理器,其他设备,PCI数据捕获和信号处理控制器出现感很多未知设备感叹号,通用解决方法,以华为matebook为例

问题的关键是找到对应的驱动。 通用解决方法: 打开设备管理器,找到未知设备,右键属性——详细信息——下拉列表找到硬件标识符Hardware Ids——复制第一行的ID——打开浏览器搜索相关内容,确定该设备对应的驱动名称——从可靠渠…

在人生最好的状态读研,社科院与杜兰大学金融管理硕士项目与你共同努力奔赴未来

人生中最好的状态是什么阶段呢?说起中年,人们往往会联想到“危机”、“油腻”等词语,确实,中年人面临着事业、家庭、健康等的各种关卡,让人觉得危机四伏。其实中年也是人一生中最为丰美的岁月,面对生活中的…

F280049C Programmable Gain Amplifier PGA

文章目录PGA14.1 Introduction简介14.1.1 Features特性14.1.2 Block Diagram结构框图14.2 Linear Output Range线性输出范围14.3 Gain Mode放大模式14.4 External Filtering外部滤波14.7 Enabling and Disabling the PGA Clock时钟使能禁止14.10 Analog Front End Integration模…

Github Package npm 应用发布实践

Github Package npm 应用发布实践 文章目录Github Package npm 应用发布实践1. 简介2. 创建新库3. 编写 index.js4. npm init 初始化5. npm install6. 创建 release-package.yml7. 发布8. 查看已发布的包9. 管理 npm 包1. 简介 GitHub Packages 是一个用于托管和管理包的平台&…

高压功率放大器在磁巴克豪森噪声表征方法研究中的应用

实验名称:基于数据驱动的结构钢表面应力磁巴克豪森噪声表征方法研究 研究方向:材料测试 实验目的: 磁巴克豪森噪声(Magnetic Barkhausen Noise,MBN)技术可用于定量评估铁磁材料的表面应力。当前MBN法应力评估技术存在特…

【ESP32-Matter】基于 Matter 协议的 esp32-c3 开发板通讯测试过程

实验结果: 关于实验环境的搭建,请参考博客: 【ESP-Matter】基于matter协议 chip-tool 控制 esp32-c3 开发板点灯 写在前边的话: matter 能带来什么? 让多种支持 IP 网络的设备协同工作,如 Wi-Fi 和 Th…

商汤科技感知算法一面复盘

来源:投稿 作者:LSC 编辑:学姐 自我介绍 介绍自己的项目 Inception网络的核心模块是什么,有什么用 Inception模块的核心思想就是将不同的尺度的信息特征以并行分支的方式结合在一起,经过不同卷积层处理的结果矩阵在…

免费开源的箱包制造行业ERP管理系统介绍

用Odoo免费开源ERP按需打造可持续商业模型 广东百立皮具是一家集生产、采购、定制、销售为一体的箱包及配饰贸易公司,专营各类箱包皮革制品,产品业务规模遍布全世界。百立皮具距今运营已有十余年之久,拥有千余名员工,且在多国都开…

反向传播算法和计算图详细介绍及其原理详解

相关文章 梯度下降算法、随机梯度下降算法、动量随机梯度下降算法、AdaGrad算法、RMSProp算法、Adam算法详细介绍及其原理详解反向传播算法和计算图详细介绍及其原理详解 文章目录相关文章前言一、反向传播算法1.1 什么是反向传播算法?1.2 更泛化的例子二、计算图2…

我把这一年学的 CSS 知识点精炼总结成了一篇文档

文章目录一.CSS简介1.什么是CSS?二.CSS语法1.语法规则2.注释三.CSS选择器1.CSS的id选择器2.CSS的class选择器四.CSS创建1.外部样式表2.内部样式表3.内联样式4.多重样式5.多重样式的优先级五.CSS 背景1.背景颜色2.背景图像3.背景图像 - 水平或垂直平铺4.背景图像- 设…

【云原生 | Kubernetes 实战】18、K8s 安全实战篇之 RBAC 认证授权(上)

目录 一、k8s 安全管理:认证、授权、准入控制概述 1.1 认证 认证基本介绍 授权基本介绍 准入控制基本介绍 为什么需要准入控制器呢? k8s 客户端访问 apiserver 的几种认证方式 kubeconfig 文件 1.2 授权 Role、RoleBinding、ClusterRole 和 C…

springboot学习(七十六) springboot中为多个controller添加统一访问URL的前缀

文章目录前言一、配置文件内添加前缀配置二、配置映射的实体三、自定义注解四、自定义PathMatch添加前缀五、测试前言 在某些情况下,服务的controller中前缀是一致的,例如所有URL的前缀都为/context-path/api/v1,需要为某些URL添加统一的前缀…

IFCOpenShell编译经验

IFCOpenShell编译经验 环境准备: Git:官网 CMake:官网 VisualStudio:官网 安装环境后需设置环境变量: C:\Program Files\Git\cmd D:\Program Files (x86)\cmake-3.25.1-x86_64\bin 下载开发包 编译官网 git clone --recursive https://github.com/IfcO…

【LeetCode每日一题】——1539.第 k 个缺失的正整数

文章目录一【题目类别】二【题目难度】三【题目编号】四【题目描述】五【题目示例】六【解题思路】七【题目提示】八【题目进阶】九【时间频度】十【代码实现】十一【提交结果】一【题目类别】 二分查找 二【题目难度】 简单 三【题目编号】 1539.第 k 个缺失的正整数 四…

关于VSCode的三个配置文件

关于VSCode的三个配置文件 若要使用VSCode来开发C程序,则应该了解以下三种配置文件,分别为: tasks.json:编译器相关的配置文件。比如,设置编译指令。 注:对于复杂的编译任务(涉及多个源文件的编…

《Linux运维总结:Centos7.6部署redis6.2.8哨兵集群》

一、部署redis服务 1.1、环境信息 环境信息如下: 主机IP操作系统Redis版本CPU架构端口角色192.168.1.191Centos7.66.2.8x86_647001master192.168.1.192Centos7.66.2.8x86_647002slave192.168.1.193Centos7.66.2.8x86_647003slave192.168.1.191Centos7.66.2.8x86_6…