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

文章目录

      • 一、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)

二、滑屏操作

  • 同一个水平位置左滑:
    • 开始位置与结束位置的坐标特点:
      • Y坐标相同
      • x坐标从大到小
  • 同一个水平位置右滑:
    • 开始位置与结束位置的坐标特点:
      • Y坐标相同
      • x坐标从小到大
  • 上滑:
    • 开始位置与结束位置的坐标特点:
      • X坐标相同
      • Y坐标从大到小
  • 下滑:
    • 开始位置与结束位置的坐标特点:
      • X坐标相同
      • Y坐标从小到大
复制代码
# -*- 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("实现右滑两次")
相关推荐
肖永威32 分钟前
macOS环境安装/卸载python实践笔记
笔记·python·macos
TechWJ1 小时前
PyPTO编程范式深度解读:让NPU开发像写Python一样简单
开发语言·python·cann·pypto
枷锁—sha1 小时前
【SRC】SQL注入WAF 绕过应对策略(二)
网络·数据库·python·sql·安全·网络安全
abluckyboy1 小时前
Java 实现求 n 的 n^n 次方的最后一位数字
java·python·算法
喵手1 小时前
Python爬虫实战:构建各地统计局数据发布板块的自动化索引爬虫(附CSV导出 + SQLite持久化存储)!
爬虫·python·爬虫实战·零基础python爬虫教学·采集数据csv导出·采集各地统计局数据发布数据·统计局数据采集
天天爱吃肉82182 小时前
跟着创意天才周杰伦学新能源汽车研发测试!3年从工程师到领域专家的成长秘籍!
数据库·python·算法·分类·汽车
m0_715575342 小时前
使用PyTorch构建你的第一个神经网络
jvm·数据库·python
甄心爱学习2 小时前
【leetcode】判断平衡二叉树
python·算法·leetcode
深蓝电商API3 小时前
滑块验证码破解思路与常见绕过方法
爬虫·python
Ulyanov3 小时前
Pymunk物理引擎深度解析:从入门到实战的2D物理模拟全攻略
python·游戏开发·pygame·物理引擎·pymunk