06-操作元素

        在前面的文章中重点介绍了一些元素的定位方法,定位到元素后,就需要操作元素了。本篇通过简单案例来介绍app应用中的一些常用操作。

一、案例介绍

        下面列表中有四个字典,每个字典中的num1代表第一个操作数,num2代表第二个操作数,op代表操作符。

        现要求用代码读取这个列表中的字典,在计算机apk中自动化完成对应的运算操作,并通过读取计算器的结果框中显示的数字,打印运算结果。

dict_data = [{'num1': 78, 'num2': 98, 'op': '+'},{'num1': 56, 'num2': 34, 'op': '-'},{'num1': 34, 'num2': 2, 'op': '*'},{'num1': 123, 'num2': 89, 'op': '/'}
]

二、代码实现

from appium import webdriver
import timedict_data = [{'num1': 78, 'num2': 98, 'op': '+'},{'num1': 56, 'num2': 34, 'op': '-'},{'num1': 34, 'num2': 2, 'op': '*'},{'num1': 123, 'num2': 89, 'op': '/'}
]digit_data = {'0': 'zero','1': 'one','2': 'two','3': 'three','4': 'four','5': 'five','6': 'six','7': 'seven','8': 'eight','9': 'nine'
}op_data = {'+': 'plus','-': 'minus','*': 'multiply','/': 'divide'
}# 设置启动参数
desired_cap = {}
desired_cap['platformName'] = 'Android'
desired_cap['platformVersion'] = '6.0.1'
desired_cap['deviceName'] = '127.0.0.1:7555'
# 必须参数,指定被测软件的包名
desired_cap['appPackage'] = 'com.differ.xiaoming'
# 必须参数,指定要打开app的哪个页面
desired_cap['appActivity'] = 'com.differ.xiaoming.activity.CalcActivity'
desired_cap['automationName']='Uiautomator2'
desired_cap['noReset'] = True
desired_cap['newCommandTimeout'] = 6000
desired_cap['unicodeKeyboard'] = True
desired_cap['resetKeyboard'] = Truedriver = webdriver.Remote('http://localhost:4723/wd/hub', desired_cap)
time.sleep(5)def get_res(num1, num2, op):# 1.解析第一个操作数for letter in num1:driver.find_element('id', 'com.differ.xiaoming:id/btn_{}'.format(digit_data[letter])).click()# 2.解析操作符driver.find_element('id', 'com.differ.xiaoming:id/btn_{}'.format(op_data[op])).click()# 3.解析第二个操作数for letter in num2:driver.find_element('id', 'com.differ.xiaoming:id/btn_{}'.format(digit_data[letter])).click()# 4.点击等于符号driver.find_element('id', 'com.differ.xiaoming:id/btn_equal').click()# 5.定位结果框,并对结果进行打印res = driver.find_element('id', 'com.differ.xiaoming:id/et_show').textprint('{}{}{}={}'.format(num1, op, num2, res))for data in dict_data:get_res(str(data['num1']), str(data['num2']), data['op'])

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

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

相关文章

力扣 面试题17.04.消失的数字

数组nums包含从0到n的所有整数,但其中缺了一个。请编写代码找出那个缺失的整数。你有办法在O(n)时间内完成吗? 示例 1: 输入:[3,0,1] 输出:2 示例 2: 输入:[9,6,4,2,3,5,7,0,1] 输出&#x…

GIT----使用技巧之保存现场回退新建分支继续开发

GIT----使用技巧之保存现场回退新建分支继续开发 前言: 故事是这样的,有一个比较复杂的项目使用的是STM32F103VCT6(资源flash-256k,RAM-48k),开发到一半发现RAM不够用了,换容量更大的芯片STM32F103VGT6(资源…

再谈量化策略失效的问题

数量技术宅团队在CSDN学院推出了量化投资系列课程 欢迎有兴趣系统学习量化投资的同学,点击下方链接报名: 量化投资速成营(入门课程) Python股票量化投资 Python期货量化投资 Python数字货币量化投资 C语言CTP期货交易系统开…

【qt5生成软件-can卡-上位机-无法加载ControlCAN.dll错误代码(0xc0150002)等相关问题-WIN11系统-尝试解决】

【qt5生成软件-无法加载ControlCAN.dll&错误代码0xc0150002:-等相关问题-WIN11系统-尝试解决-总结整理】 1.前言2.环境说明3.问题说明4.尝试方法总结(1)更新支持包c库(2)更新USB相关驱动(3)…

Sqlite3数据库基本使用

一、基本概念 数据:能够输入计算机并能被计算机程序识别和处理的信息集合 数据库:长期存储在计算机内、有组织的、可共享的大量数据的集合 DBMS:位于用户与操作系统之间的一层数据管理软件,用于操纵和管理数据库 二、安装 在线…

经验分享,16进制与字符串的互相转换网站

分享一个16进制与字符串的互相转换的网站,比较实用。 网址: https://www.bejson.com/convert/ox2str/ 截图:

C++中priority_queue的模拟实现(注释详解)

首先我们要了解什么是 priority_queue ,priority_queue 优先队列是一种数据结构,它存储了元素以及它们的优先级。在优先队列中,元素按照其优先级的顺序进行移除,优先级较高的元素首先被移除。优先队列通常使用堆数据结构来实现&am…

Linux内核编程(六)平台总线plantform驱动模型

本文目录 前述:为什么引入平台总线模型一、知识点1. 什么是平台总线模型2. 平台总线模型使用3. 平台总线是如何工作的4. 平台总线模型的优点 二、平台总线设备层1. 常用API(1) 注册一个平台设备(2) 注销一个平台设备&a…

最好用的智能猫砂盆存在吗?自用分享智能猫砂盆测评!

在现代都市的忙碌生活中,作为一名上班族,经常因为需要加班或频繁出差而忙碌得不可开交。急匆匆地出门,却忘了给猫咪及时铲屎。但是大家要知道,不及时清理猫砂盆会让猫咪感到不适,还会引发各种健康问题,如泌…

HTML入门教程:深度解析HTML,开启你的前端技术之旅

一、引言 HTML(HyperText Markup Language,超文本标记语言)是前端开发的基础,它负责构建网页的结构和内容。作为前端技术栈的基石,HTML的掌握程度直接影响到网页的开发效率和用户体验。本教程将带你从零开始&#xff…

(新)Spring Security如何实现登录认证(实战篇)

一、回顾认证流程详解 概念速查: Authentication接口: 它的实现类,表示当前访问系统的用户,封装了用户相关信息。 AuthenticationManager接口:定义了认证Authentication的方法 UserDetailsService接口:加载用户特定数据的核心接…

从视频创意到传播策略 | 医药产品TVC新媒体传播方案

作为营销策划人,你一定在寻找能够激发创意灵感、拓展策划视野的实战案例。这份最新传播方案由Unithought精心打造,不仅是一份详尽的策划指南,更是一次深入患者心灵的品牌传播实践。 何策网,每日收录全网方案PPT ! 方…

Simulink代码生成: 基本数据类型

文章目录 1 引言2 Simulink中的基本数据类型3 数据类型实例3.1 浮点类型3.2 整数类型3.3 布尔类型 3 数据类型使用的注意点3.1 浮点数等于比较3.2 整形数溢出3.3 布尔类型的位域 4 关于定点数的说明5 总结 1 引言 正如C语言中为变量区分了不同的数据类型一样,Simul…

Spark日志有哪些?

spark.log:记录作业运行日志,包括Spark框架内部日志和用户通过日志接口输出的日志。 executor 启动结束日志: job,stage,task提交结束日志: pmap.log:周期性地截取Driver或Executor的pmap和…

Java 17的新特性

Java 17引入了多项新特性,以下是一些重要的更新: 增强的伪随机数生成器(JEP 356) Java 17为伪随机数生成器(PRNG)提供了新的接口类型和实现,包括可跳转的PRNG和另一类可拆分的PRNG算法&#xf…

公开整理-中国海关进出口增减数据(2008-2024年)

数据来源:东方财富网 时间跨度:2008年至今 数据范围:全国范围 数据指标: 年月 当月出口额-金额 当月出口额-同比增长 当月出口额-环比增长 当月进口额-金额 当月进口额-同比增长 当月进口额-环比增长 累计…

SCI一区TOP|常青藤优化算法(IVYA)原理及实现【免费获取Matlab代码】

目录 1.背景2.算法原理2.1算法思想2.2算法过程 3.结果展示4 .参考文献5.代码获取 1.背景 2024年,M Ghasemi受到自然界中常青藤生长行为启发,提出了常青藤优化算法(Ivy Algorithm, IVYA)。 2.算法原理 2.1算法思想 IVYA模拟常青…

【Linux】环境基础开发工具使用(yum、vim、gcc/g++、gdb、make/Makefile)

文章目录 Linux 软件包管理器 yumLinux开发工具Linux编辑器-vim使用vim的基本概念vim下各模式的切换vim命令模式各命令汇总vim底行模式各命令汇总批量化注释和批量化去注释vim简单的配置解决一个小问题 Linux编译器-gcc/g作用gcc/g 语法预处理编译汇编链接什么是函数库 Linux调…

【后端】websocket学习笔记

文章目录 1. 消息推送常见方式1.1 轮询 VS 长轮询1.2 SSE(server-sent event)服务器发送事件 2. websocket介绍2.1 介绍2.2 原理2.3 websoket API2.3.1 客户端【浏览器】API2.3.2 服务端API 3. 代码实现3.1 流程分析3.2 pom依赖3.3 配置类3.4 消息格式3.5 消息类 4.…

Weevil-Optimizer象鼻虫优化算法的matlab仿真实现

目录 1.程序功能描述 2.测试软件版本以及运行结果展示 3.核心程序 4.本算法原理 5.完整程序 1.程序功能描述 Weevil-Optimizer象鼻虫优化算法的matlab仿真实现,仿真输出算法的优化收敛曲线,对比不同的适应度函数。 2.测试软件版本以及运行结果展示…