php网站开发什么/微信小程序开发公司

php网站开发什么,微信小程序开发公司,宁夏建设工程造价信息网,网站如何做三端适配Appium之Toast元素识别教程与实例 一、Toast简介 Toast是Android系统中的轻量级消息提示框,以浮动形式短暂显示(通常2-3秒),无法被点击且不会获取焦点。常见于登录失败、操作提示等场景,如“密码错误”或“网络异常”。…

Appium之Toast元素识别教程与实例
一、Toast简介
Toast是Android系统中的轻量级消息提示框,以浮动形式短暂显示(通常2-3秒),无法被点击且不会获取焦点。常见于登录失败、操作提示等场景,如“密码错误”或“网络异常”。传统定位工具无法直接捕获,需借助Appium的特定配置实现。

二、环境准备

Node.js安装

官网下载并安装Node.js,验证安装成功:npm -v。
切换npm镜像源

使用淘宝镜像加速依赖下载:

npm config set registry https://registry.npm.taobao.org

安装cnpm替代npm:

npm install -g cnpm --registry=https://registry.npm.taobao.org
```[2](@ref)[3](@ref)

安装uiautomator2驱动

执行命令:

cnpm install appium-uiautomator2-driver

安装后检查node_modules目录是否存在相关文件。
安装Selenium

通过pip安装:

pip install selenium

验证版本:

pip show selenium

三、关键配置
在Capability中必须添加以下参数以启用UiAutomator2引擎:

desired_caps['automationName'] = 'uiautomator2'

⚠️ 注意:此配置可能导致Appium运行速度变慢,非必要场景建议使用默认引擎。

四、定位Toast元素的方法

1.XPath定位

通过文本内容:error_message = “登录密码错误”

xpath = '//*[@text="{}"]'.format(error_message)
toast_element = WebDriverWait(driver, 5).until(lambda x: x.find_element_by_xpath(xpath))
```[2](@ref)[5](@ref)

通过class属性(通用方法):

toast_element = driver.find_element(AppiumBy.XPATH, "//*[@class='android.widget.Toast']")
```[6](@ref)[7](@ref)

2.显式等待与动态函数
使用WebDriverWait确保捕获短暂出现的Toast:

from selenium.webdriver.support.ui import WebDriverWait
toast = WebDriverWait(driver, timeout=5, poll_frequency=0.5).until(lambda x: x.find_element(AppiumBy.XPATH, "//*[@class='android.widget.Toast']")
)
```[5](@ref)[6](@ref)

五、实战案例:登录失败捕获Toast
场景:输入错误密码后获取提示“账号或密码错误”。
代码示例:

# coding=utf-8  # 必须添加,避免中文编码问题[3](@ref)[5](@ref)
from appium import webdriver
from selenium.webdriver.support.ui import WebDriverWait# 配置Capability
desired_caps = {"platformName": "Android","automationName": "uiautomator2","appPackage": "com.example.app","appActivity": ".MainActivity"
}
driver = webdriver.Remote("http://localhost:4723/wd/hub", desired_caps)# 执行登录操作
driver.find_element_by_id("username_input").send_keys("test")
driver.find_element_by_id("password_input").send_keys("wrong_password")
driver.find_element_by_id("login_btn").click()# 捕获Toast
try:toast_text = WebDriverWait(driver, 5).until(lambda x: x.find_element(AppiumBy.XPATH, "//*[contains(@text, '密码错误')]")).textprint("捕获到的Toast内容:", toast_text)
except TimeoutException:print("未找到Toast提示")

输出结果:

捕获到的Toast内容:账号或密码错误

六、常见问题与解决

1.Toast无法定位
检查automationName是否为uiautomator2。确保Appium版本≥1.6.3,建议使用1.20+。

2.中文乱码
在Python脚本开头添加# coding=utf-8。

3.Toast显示时间过短
缩短poll_frequency(如0.1秒),增加检测频率。

七、扩展:封装Toast判断函数

def get_toast_text(driver, timeout=5):try:toast_loc = (AppiumBy.XPATH, "//*[@class='android.widget.Toast']")toast_element = WebDriverWait(driver, timeout).until(EC.presence_of_element_located(toast_loc))return toast_element.textexcept:return None

调用示例:

toast = get_toast_text(driver)
if toast == "登录成功":print("测试通过")
```[6](@ref)[7](@ref)

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

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

相关文章

SSM框架——Spring面试题

Spring常见面试题 Spring框架中的单例bean是线程安全的吗 不是线程安全的 Spring框架中有一个Scope注解,默认的值就是singleton,单例的。 因为一般在spring的bean的中都是注入无状态的对象,没有线程安全问题,如果在bean中定义了可…

20250317笔记本电脑在ubuntu22.04下使用acpi命令查看电池电量

20250317笔记本电脑在ubuntu22.04下使用acpi命令查看电池电量 2025/3/17 18:05 百度:ubuntu查看电池电量 百度为您找到以下结果 ubuntu查看电池电量 在Ubuntu操作系统中,查看电池电量通常可以通过命令行或者图形界面来完成。下面是一些常见的方法&…

SpringBoot第三站:配置嵌入式服务器使用外置的Servlet容器

目录 1. 配置嵌入式服务器 1.1 如何定制和修改Servlet容器的相关配置 1.server.port8080 2. server.context-path/tx 3. server.tomcat.uri-encodingUTF-8 1.2 注册Servlet三大组件【Servlet,Filter,Listener】 1. servlet 2. filter 3. 监听器…

C# WPF编程-启动新窗口

C# WPF编程-启动新窗口 新建窗口: 工程》添加》窗口 命名并添加新的窗口 这里窗口名称为Window1.xaml 启动新窗口 Window1 win1 new Window1(); win1.Show(); // 非模态启动窗口win1.ShowDialog(); // 模态启动窗口 模态窗口:当一个模态窗口被打开时&a…

谈谈 undefined 和 null

*** 补充 null 和 ‘’

Ubuntu快速安装使用gRPC C++

目录 引言一、快速安装1. 安装必要依赖库2. 安装gRPC 二、测试使用三、参考博客 引言 关于gRPC随着云原生微服务的火热也流行了起来,而且学好一个gRPC框架对目前来说也是必须的了。然而对于一个基础的小白来说,这个gRPC的框架运用起来是及其的困难&…

高数1.5 极限的运算法则

1. 预备知识 2.四则求极限法则 3.复合运算求极限法则

pandas学习笔记(一)——基础知识和应用案例

pandas学习笔记 基础语法参考菜鸟教程:https://www.runoob.com/pandas/pandas-tutorial.html # jupyter import pandas as pd import matplotlib from matplotlib import pyplot as plt import numpy as npmatplotlib.use(TkAgg)data {timestamp: [1, 2, 3, 4, 5…

海绵音乐 3.4.0 | 免费AI音乐创作软件,支持多种风格智能生成

海绵音乐是一款专为Android用户设计的免费AI音乐创作软件,搭载深度神经网络作曲引擎,支持流行、电子、古风等12种音乐风格智能生成。提供多轨道编辑界面(8轨同步混音),可自定义鼓点、旋律和和弦进行实时混音&#xff0…

2025 香港 Web3 嘉年华:全球 Web3 生态的年度盛会

自 2023 年首届香港 Web3 嘉年华成功举办以来,这一盛会已成为全球 Web3 领域规模最大、影响力最深远的行业活动之一。2025 年 4 月 6 日至 9 日,第三届香港 Web3 嘉年华将在香港盛大举行。本届活动由万向区块链实验室与 HashKey Group 联合主办、W3ME 承…

Linux目录结构以及文件操作

Linux目录结构以及文件操作 ubuntu属于Linux的发行版,带图形界面。但是跑在嵌入式设备中的Linux操作系统往往不带图形界面,直接使用命令来操作。Linux区分大小写。 在Linux系统上,文件被看作字节序列。 普通文件(—&#xff09…

React19源码系列之FiberRoot节点和Fiber节点

在上一篇文章,看了createRoot函数的大致流程。 createContainer函数创建并返回了FiberRoot 。FiberRoot是由createFiberRoot函数创建, createFiberRoot函数还将 FiberRoot和 根Fiber 通过current属性建立起了联系。将FiberRoot作为参数传给 ReactDOMRoo…

【2025年3月最新】Cities_Skylines:城市天际线1全DLC解锁下载与教程

亲测2025年3月11日能用,能解锁全部DLC 使用教程 点击下载 点击下载

基于Django的交通指示图像识别分析系统

【Django】基于Django的交通指示图像识别分析系统 (完整系统源码开发笔记详细部署教程)✅ 目录 一、项目简介二、项目界面展示三、项目视频展示 一、项目简介 本项目旨在通过大量交通标志数据训练后,得到较好的识别模型,便于用户…

SAP HANA on AWS Amazon Web Services

SAP HANA on AWS Amazon Web Services

【设计模式】】工厂模式

三、工厂模式 3.1 工厂模式 创建一个类对象的传统方式是使用关键字new, 因为用new 创建的类对象是一个堆对象,可以实现多态。工厂模式通过把创建对象的代码包装起来,实现创建对象的代码与具体 的业务逻辑代码相隔离的目的(将对象的创建和使用进行解耦)…

Python递归与递推的练习(初步了解复杂度,全排列的价值,奇妙的变换,数正方形,高塔登顶方案)

一.了解复杂度 1.1 为什么要考虑复杂度 在比赛中,编程题会有时间和空间的限制,所以我们需要根据时间复杂度和空间复杂度来判断用什么样的算法。 在本章中递归的时间复杂度比递推慢好多所有我们在写代码时对递归和递推的选择中应该尽量考虑递推。 复杂度…

解决分布式事务的方案 —— Seata

解决分布式事务的方案 —— Seata 1. 认识 Seata 解决分布式事务的方案有很多,但实现起来都比较复杂,因此我们一般会使用开源的框架来解决分布式事务问题。在众多的开源分布式事务框架中,功能最完善、使用最多的就是阿里巴巴在 2019 年开源…

Asp.net Core API 本地化

本文是一个demo,演示了如何根据用户接口查询字段(正常放header中),设置当前culture,并获取当前culture的key value给用户提示 创建Resources文件夹,添加以下三个文件 其中ExceptionUnuse 是一个空的类,供IStringLocalizer使用&a…

MambaVision:一种Mamba-Transformer混合视觉骨干网络

摘要 我们提出了一种新型混合Mamba-Transformer主干网络,称为MambaVision,该网络专为视觉应用而设计。我们的核心贡献包括重新设计Mamba公式,以增强其对视觉特征的高效建模能力。此外,我们还对将视觉Transformer(ViT&…