04 APP 自动化- Appium toast 元素定位列表滑动 - 教程

news/2025/10/7 22:03:13/文章来源:https://www.cnblogs.com/tlnshuju/p/19128942

04 APP 自动化- Appium toast 元素定位&列表滑动 - 教程

2025-10-07 21:56  tlnshuju  阅读(0)  评论(0)    收藏  举报

文章目录

      • 一、toast 元素的定位
      • 二、滑屏操作

一、toast 元素的定位

toast 元素就是简易的消息提示框,toast 显示窗口显示的时间有限,一般3秒左右

# -*- coding=utf-8 -*-
from time import sleep
from appium import webdriver
from appium.options.android import UiAutomator2Options
from appium.webdriver.common.appiumby import AppiumBy
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as Ec
# 设置操作终端的配置参数
desired_caps = dict(
platformName='Android', # 指定操作系统
platformVersion='12',# 指定操作系统版本
automationName='Uiautomator2',# 默认框架
deviceName='127.0.0.1:62001',# 指定设备名称
appPackage='com.tal.kaoyan',# 被操作的应用程序包名
appActivity='com.tal.kaoyan.ui.activity.SplashActivity',# 启动页面
noReset='true',# true--不重置 false--重置
app='F:\Pycharm\AppAuto\kaoyan_v4.5.3.apk' # apk文件所在路径
)
# 发送命令给 appium server
driver = webdriver.Remote('http://127.0.0.1:4723', options=UiAutomator2Options().load_capabilities(desired_caps))
#-------------手机号密码登录----------------
phone_loc = (AppiumBy.ID, 'com.tal.kaoyan:id/loginEmailEdittext')
WebDriverWait(driver, 5).until(Ec.presence_of_element_located(phone_loc))
phone_input = driver.find_element(*phone_loc)
# 清空手机号输入框
phone_input.clear()
# 输入手机号
phone_input.send_keys('15956423841')
password_input = driver.find_element(AppiumBy.ID, 'com.tal.kaoyan:id/rtlLoginLayout')
# 清空密码输入框
# password_input.clear()
# clear()方法无效,可以模拟键盘操作手动删除文本框内容
password_input.click()
driver.press_keycode(67).press_keycode(67).press_keycode(67).press_keycode(67).press_keycode(67).press_keycode(67).press_keycode(67).press_keycode(67).press_keycode(67)
# 输入密码
# password_input.send_keys('121335')
# send_keys() 无效,模拟键盘输入
driver.press_keycode(8).press_keycode(14).press_keycode(14).press_keycode(8).press_keycode(7)
protocol_agree_check = driver.find_element(AppiumBy.ID, 'com.tal.kaoyan:id/loginTreatyCheckboxPassword')
checked = protocol_agree_check.get_attribute("checked")
# 未勾选同意协议,则进行点击同意协议
if checked == 'false':
protocol_agree_check.click()
login_btn = driver.find_element(AppiumBy.ID, 'com.tal.kaoyan:id/loginLoginBtn')
# 点击登录
login_btn.click()
toast_loc = (AppiumBy.XPATH, "//*[contains(@text,'帐号或密码错误')]")
# 显示等待
WebDriverWait(driver, 15,0.01).until(Ec.presence_of_element_located(toast_loc))
toast_text = driver.find_element(*toast_loc).text
print("获取 toast 元素的文本内容:",toast_text)

二、滑屏操作

# -*- coding=utf-8 -*-
from appium import webdriver
from appium.options.android import UiAutomator2Options
# 设置操作终端的配置参数
desired_caps = dict(
platformName='Android', # 指定操作系统
platformVersion='12',# 指定操作系统版本
automationName='Uiautomator2',# 默认框架
deviceName='127.0.0.1:62001',# 指定设备名称
appPackage='com.tal.kaoyan',# 被操作的应用程序包名
appActivity='com.tal.kaoyan.ui.activity.SplashActivity',# 启动页面
noReset='true',# true--不重置 false--重置
app='F:\Pycharm\AppAuto\kaoyan_v4.5.3.apk' # apk文件所在路径
)
# 发送命令给 appium server
driver = webdriver.Remote('http://127.0.0.1:4723', options=UiAutomator2Options().load_capabilities(desired_caps))
#实现滑屏
# 获取整个app屏幕的大小
size = driver.get_window_size()
x = size["width"]
y = size["height"]
# 左滑2次
for i in range(0,2):
driver.swipe(start_x=x*0.9,end_x=x*0.2,start_y=y*0.9,end_y=y*0.9,duration=1000)
print("实现左滑两次")
# 右滑2次
for i in range(0,2):
driver.swipe(start_x=x*0.2,end_x=x*0.9,start_y=y*0.9,end_y=y*0.9,duration=1000)
print("实现右滑两次")

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

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

相关文章

3.模块化与MVVM设计模式

Aquarius开发框架旨在帮助独立开发者和中小型团队,完成iOS App的快速实现与迭代。使用框架开发将给你带来简单、高效、易维护的编程体验。大家好,我是K哥。一名独立开发者,同时也是Swift开发框架【Aquarius】的作者…

2025舒适轮胎厂家、静音轮胎厂家企业品牌权威推荐榜:静音技术与驾乘体验口碑之选

随着汽车工业的快速发展,消费者对轮胎性能的要求日益提高。在众多轮胎性能指标中,舒适性成为越来越多车主关注的重点。舒适轮胎不仅关系到驾乘体验,更直接影响行车安全与车辆性能。优秀的舒适轮胎应当具备卓越的静音…

骗子会利用钓鱼网站做啥顺企网属于什么网站

填空题Linux_____可以理解为运行在_____之上,回避直接操作_____和配置文件的应用程序。在Linux中常见的两种图形环境是_____和______。在Linux中的配置文件为____和_____。在Fedor8.0中可以通过____窗口进行主题设置。在“自定义主题”对话框中可以对“控件”、“颜…

成品网站seowordpress 模板 淘宝客

在特征工程中,将分类特征转换为数字特征的任务称为编码。 有多种方法来处理分类特征,如OneHotEncoding和LabelEncoding,FrequencyEncoding或通过其计数替换分类特征。同样,我们可以使用均值编码(MeanEncoding)。 均值编码 均值…

20251005 耳朵龙字符串

因为*最多只会有10个,所以被它截断成的串也很少。 每个串跑一边kmp得到匹配序列,然后DP即可发现每次扩展一个字符的时候broder的增加是有限的。 我们每次扩展它最大+2,我们默认他+2,然后check,不符合再缩减直到符…

玩转树莓派屏幕之五:自定义LCD屏幕显示

上一章节中已经完成了lvgl适配以及tslib的屏幕校准。自己要展示的内容还没有展示出来,还是使用玩转树莓派屏幕之二:自定义屏幕显示 中直接展示的文字,没有任何渲染。 lvgl中支持很多控件,屏幕展示的内容更加丰富。…

AtCoder ARC207 总结

AtCoder ARC207 总结 B 构造题。观察样例,发现 \(i\) 恰好三步到达 \(n-i\),其他点都是两步到达,这使我们想到 \(n\) 为偶数时的解法:分成 \(\le n/2\) 和 \(>n/2\) 的两部分点,对于其中一部分,我们让一个点恰…

工信部信息备案网站首页wordpress 多站点 合集

目录 前提:list 的基本介绍 一、构造/析构/拷贝/赋值 1、构造函数 2、析构函数 3、拷贝构造函数 4、赋值 二、修改操作 1、push_back 2、insert 3、erase 4、clear 三、list iterator 的使用 1、operator * 2、operator 3、operator -- 4、operator &…

http长连接维护【yet】

http长连接维护【yet】。

2025.10.7模拟赛

赛时 唐完了 开题,看错T1,以为是可重边,然后推性质,发现假了 看一眼题目,没有可重边,是个红题,唐完了,然后写完1h15min已经过去了 T2想了几种转化,然后脑子不思考了 看到左右<=7,觉得只有部分的顺序会影响…

详细介绍:ZLG ZCANPro,ECU刷新,bug分享

详细介绍:ZLG ZCANPro,ECU刷新,bug分享pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "…

好好学习, 天天向上

纯粹的热爱世界, 对其多样性的好奇, 引发出无限的成长, 探索和学习, 让人变得强大

万网发布网站建网站需要什么软件

💡💡💡本文改进内容: token mixer被验证能够大幅度提升性能,但典型的token mixer为自注意力机制,推理耗时长,计算代价大,而RIFormers是无需TokenMixer也能达成SOTA性能的极简ViT架构 ,在保证性能的同时足够轻量化。 💡💡💡RIFormerBlock引入到YOLOv9,多个数…

副本(Replica)在Elasticsearch中扮演什么角色? - 详解

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

请问怎么做网站小城镇建设 网站官方

spring共四天 第一天&#xff1a;spring框架的概述以及spring中基于XML的IOC配置 第二天&#xff1a;spring中基于注解的IOC和ioc的案例 第三天&#xff1a;spring中的aop和基于XML以及注解的AOP配置 第四天&#xff1a;spring中的JdbcTemlate以及Spring事务控制 -------------…

瀑布流资源网站模板wordpress新建页面显示数据

一、插入排序 插入排序的代码实现虽然没有冒泡排序和选择排序那么简单粗暴&#xff0c;但它的原理应该是最容易理解的了&#xff0c;因为只要打过扑克牌的人都应该能够秒懂。插入排序是一种最简单直观的排序算法&#xff0c;它的工作原理是通过构建有序序列&#xff0c;对于未排…

CentOS7关闭防火墙、Linux开启关闭防火墙 - 详解

CentOS7关闭防火墙、Linux开启关闭防火墙 - 详解pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", …

鱼头seo软件张家界有实力seo优化费用

安装Elasticsearch 7.8.0 官网&#xff1a;Elasticsearch 7.8.0 | Elastic 大家下载所需要的安装包即可。然后解压缩&#xff1a; Elasticsearch是通过java编写的&#xff0c;所以自带jdk。多好&#xff0c;下载Elasticsearch赠送jdk 0.0&#xff0c;不过一般我们用自己的jdk…

OpenStack实验过程

用户与项目管理 创建用户与项目 cd ~ source keystonerc_admin # 应用需要的环境变量,获取权限以便后续操作 openstack project create cec # 创建项目 openstack user create --domain default --password openstack…