Appium+Python之获取toast
思考:手机APP上的必填或错误文本提示一般1-2s就会消失,比较难定位,所以一般的固定元素定位方式是不可用的,那我们如何定位toast呢?
前提:1.Appium1.6.3以上(包括1.6.3)
2.下载安装node.js(官网下载即可)
3.下载安装uiautomator2及其2个配置文件(appium-uiautomator2-server-debug-androidTest.apk和appium-uiautomator2-server-v2.8.0.apk)
4.下载安装Android SDK(tools文件夹下必须要有zipalign.exe工具,否则没法启动app)
5.真机或模拟器版系统版本要求Android 5.0以上
环境准备:
一、下载安装node.js
1.进入官网下载:https://nodejs.org/en/download/, 选择适合自己操作系统的安装文件,下载node js,并安装(这里安装路径:C:\Program Files\nodejs)
以管理员权限打开cmd命令窗口
验证nodejs是否安装成功:node -v
验证npm是否安装成功:npm -v
2.改变原有路径
(1)我们要先配置npm的全局模块的存放路径以及cache缓存的路径,例如我希望将以上两个文件夹放在NodeJS的主目录下,便在NodeJs下建立"node_global"及"node_cache"两个文件夹,输入以下命令改变npm配置
- npm config set prefix "C:\Program Files\nodejs\node_global"
- npm config set cache "C:\Program Files\nodejs\node_cache"
(2)在系统环境变量添加系统变量NODE_PATH,输入路径C:\Program Files\nodejs\node_global\node_modules,此后所安装的模块都会安装到该路径下
二、安装淘宝npm(cnpm)
1.输入以下命令安装cnpm(注:“-g”这个参数意思是装到global目录下,也就是上面说设置的“C:\Program Files\nodejs\node_global”里面)
验证cnpm是否安装成功:cnpm -v
- npm install -g cnpm --registry=https://registry.npm.taobao.org
2.添加系统变量path的内容
因为cnpm会被安装到C:\Program Files\nodejs\node_global下,在系统变量path下添加该路径即可
三、安装Appium
输入以下命令安装appium(1.8.1)
- cnpm install -g appium@1.8.1
验证Appium是否安装成功:Appium -v
appium安装成功后,里面可以看到uiautomator2及其2个配置文件
实际操作
一、启动Appium
- appium --session-override -p 4723 -bp 4768 -U emulator-5554
- -p 监听端口号
- -u 模拟器名称
- -bp 随意
二、运行模拟器
闪电或夜神模拟器
三、编写脚本:
Step1:初始化
在capability配置内部增加:desired_caps[‘uiautomationName’]=’ uiautomator2’
- DriverConfigure.py(配置脚本)
- # coding:utf-8
- '''
- Created on 2018-11-7
- @author: 丹姐
- Project:配置驱动
- '''
- from appium import webdriver
- import time
- # appium远程启动app
- # 定义获取驱动方法
- def get_driver():
- try:
- desired_caps ={}
- desired_caps['automationName'] = 'uiautomator2' #引入uiautomator2,用于定位toast
- desired_caps['platformName'] = 'Android' # 设备系统
- desired_caps['platformVersion'] = '5.1.1' # 设备系统版本
- desired_caps['deviceName'] = 'emulator-5554' # 设备名称
- desired_caps['app'] = r'E://app-debug.apk' # 测试app
- desired_caps['appPackage'] = 'com.xywg.smartsitegov' # 获取包名
- desired_caps['appActivity'] = 'com.xywg.smartsitegov.activity.LaunchActivity' # 获取activity启动
- desired_caps['unicodeKeyboard'] = 'True'#支持unicode输入法
- desired_caps['resetKeyboard'] = 'True'#重置键盘
- desired_caps['noReset'] = 'true' # 模拟用户非首次启动
- driver = webdriver.Remote("http://localhost:4723/wd/hub", desired_caps)
- time.sleep(5) # 等待5秒
- return driver
- except Exception as e:
- raise e
Step2:定位Toast元素
(1)定义toast文本内容
(2)定义元素路径
(3)定义等待时间
(4)组合文本内容和路径进行定位:用format()连接路径和文本内容
BasePage.py(基类脚本)
- # 重写获取toast方法
- def find_toast(self, message, timeout, poll_frequency):
- u'''获取toast信息文本并验证'''
- message1 = "//*[@text=\'{}\']".format(message)
- element = WebDriverWait(self.driver, timeout, poll_frequency).until(
- EC.presence_of_element_located((By.XPATH, message1)))
- return element.text
Step3:页面调用获取toast方法
XXXPage.py(页面脚本)
- #获取上传图片提示
- photo_toast = self.find_toast(u'请上传图片', 10, 0.01)
- print(u'图片上传必填提示:',photo_toast)
四、运行脚本
执行测试用例
Appium+Python之获取toast的更多相关文章
- Appium+python自动化获取toast消息的方法
转载地址:https://www.cnblogs.com/shangren/p/8191879.html 1. 首先执行这个命令:npm install -g cnpm --registry=http ...
- Appium+python自动化获取toast消息(windows版)的方法
原来用的Appium1.5.3GUI版本,那为什么升级呢? 为了兼容最新版本的iOS10和Android7 Xcode8升级后,将不支持使用UIAutomation,而是改为使用XCUITest了,并 ...
- python 怎样获取toast?
toast是什么? 想要获取toast的小伙伴们,肯定知道这个是一个什么玩意,例行还是加一个图,加以解释,下图的就是传说中的toast,它有一个特点,出现时间特别短,很难通过定位元素去获取这个toas ...
- appium自动化测试中获取toast消息的解决方法【转】
http://blog.csdn.net/hqzxsc2006/article/details/50036911 待实践.. 解决方法:appium下切换selendroid模式去获取Android的 ...
- Appium + python - get_attribute获取value操作
from appium import webdriverfrom selenium.webdriver.support.wait import WebDriverWaitfrom selenium.w ...
- Python+Appium 获取 toast 文本值方法的封装
获取toast内容方法封装如下: def get_Toast(self,message): #查找toast值 ''' method explain:查找toast的值,与find_Toast实现方法 ...
- python appium 封装获取toast方法
获取toast text封装,传入toast 部分文本,返回全部文本 def get_toast_text(self,text): try: toast_loc = (By.XPATH, " ...
- appium获取toast和操作webview实例
从testerhome上看到很多测试同学分享了toast的获取方式,其中大部分是java版本的,但也有个python版本的:Appium1.7.2 android toast 消息测试 Appium获 ...
- appium+java(八)获取Toast内容信息
前言 Appium中很经典的问题了,在两年前也就是2017年3月6号07:22分,我才看到appium1.6.3版本的发布,更新内容为Ios上可以实现Toast的获取,而Windows也就是安卓端,还 ...
随机推荐
- Centos 下硬盘分区的最佳方案
Centos7从零开始]Centos 下硬盘分区的最佳方案 2016年12月25日 10:09:02 浮華的滄桑 阅读数 41971 在对硬盘进行分区前,应该先弄清楚计算机担负的工作及硬盘的容量有 ...
- Flyway Validate failed: Migration checksum mismatch for migration version 1.0.0.01 错误
在运行系统的时候出现错误: org.springframework.beans.factory.BeanCreationException: Error creating bean with name ...
- HGOI20190810 省常中互测3
Problem A 夏洛特 若当前处在点$(x,y)$下一时刻可以向该点四周任意方向走动一步, 初始在$(0,0)$是否存在一条合法的路线满足下列$n$个限制: 每一个限制形如$t_i , x_i ...
- windows上批量杀指定进程
Taskkill 结束一个或多个任务或进程.可以根据进程 ID 或图像名来结束进程. 语法 taskkill [/s Computer] [/u Domain\User [/p Password]]] ...
- Java并发编程之java.util.concurrent包下常见类的使用
一,Condition 一个场景,两个线程数数,同时启动两个线程,线程A数1.2.3,然后线程B数4.5.6,最后线程A数7.8.9,程序结束,这涉及到线程之间的通信. public class Co ...
- MQTT协议 Websocket JS客户端
特别提示:本人博客部分有参考网络其他博客,但均是本人亲手编写过并验证通过.如发现博客有错误,请及时提出以免误导其他人,谢谢!欢迎转载,但记得标明文章出处:http://www.cnblogs.com/ ...
- shell script operate the date
How to increment a date in a bash script Use the date command's ability to add days to existing date ...
- 从curl命令获取libcurl的用法
libcurl的用法参数太多 有时候弄不好 可以先用curl命令实现了 然后获取相应的libcurl代码 比如要上传文件 curl -T d:/h.txt http://demo.xudp.cn/up ...
- python3使用ltp语言云
text="我爱自然语言处理." text=str(text) #text=urllib.quote(text) text=urllib.parse.quote(text) def ...
- Ruby小白入门笔记之<Rails项目目录结构>
一 .流程分析 二.目录分析 DemoRails app (核心) assets (web前端所需文件) images (图片) javascripts (JS代码) styleshe ...