Robotframework获取移动端toast问题
背景:
在做移动端自动化测试的时候,经常会遇到一个问题就是获取toast提示问题,如果需要解决这个问题需要重新处理,不能按照正常的逻辑,使用robotframework自带的关键字进行获取,需要重新考虑新的处理获取模式
一 环境配置
如果环境配置OK直接跳到第6步安装uiautomator2
1.下载Appium最新版
地址:https://github.com/appium/appium-desktop/releases

2.下载Python,并安装
3.下载Pycharm
4.下载Android SDK
5.安装uiautomator2
- 安装NPM镜像,地址:https://npm.taobao.org/
- 执行命令:npm install -g cnpm --registry=https://registry.npm.taobao.org
- 安装uiautomator2的配置文件执行命令:cnpm install appium-uiautomator2-driver
环境搭建好后,进行获取toast
进入appium安装根目录,D:\Python27\Lib\site-packages\robotframework_appiumlibrary-1.5-py2.7.egg\AppiumLibrary\keywords,找到_element.py进行修改文件
,加入这段语句
def toast_open_application(self,automationName,platformName,platformVersion,deviceName,uiid,appPackage,appActivity,unicodeKeyboard,resetKeyboard,noReset):
desired_caps={}
desired_caps['automationName']=automationName
desired_caps["platformName"] = platformName
desired_caps["platformVersion"] = platformVersion
desired_caps["deviceName"] = deviceName
desired_caps["uiid"] = uiid
desired_caps["appPackage"] = appPackage
desired_caps["appActivity"] = appActivity
desired_caps["unicodeKeyboard"] = unicodeKeyboard
desired_caps["resetKeyboard"] = resetKeyboard
desired_caps["noReset"] = noReset
driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub',desired_caps)
return driver
def new_clear(self,driver,path):
WebDriverWait(driver,20).until(EC.visibility_of_element_located((MobileBy.ID,'com.X.XX.debug:id/account')))
driver.find_element_by_id(path).clear()
def new_input(self,driver,path,data):
driver.find_element_by_id(path).send_keys(data)
def new_click(self,driver,path,message):
driver.find_element_by_id(path).click()
# toast_loc = '//*[contains(@text,"请输入正确规则的密码")]'
toast_loc =".//*[contains(@text,'%s')]" %message
# print((MobileBy.XPATH,toast_loc))
try:
WebDriverWait(driver,5,0.01).until(EC.presence_of_all_elements_located((MobileBy.XPATH,toast_loc)))
print(driver.find_element_by_xpath(toast_loc).text)
except:
print('没有获取到toast信息')

robotframework使用该封装的关键字进行获取
登录_密码错误(toast)
Comment Login Toast 请输入正确规则的密码
${driver} Toast Open Application UiAutomator2 Android 6.0 Lenovo TB3-X70N FACU8TP7UCAAMNUO
... com.X.cXd.debug com.XX.XXactivity.SplashActivity True True True
New Clear ${driver} com.XX.XX.debug:id/account
New Input ${driver} com.XX.cXXd.debug:id/account 123456
New Clear ${driver} com.XX.XX.debug:id/pwd
New Input ${driver} com.XX.XX.debug:id/pwd 123456ab
New Click ${driver} com.XX.XX.debug:id/login 请输入正确规则的密码

结果:

Robotframework获取移动端toast问题的更多相关文章
- 如何直接在 PC 端获取其它端设备的 UserAgent 信息呢?
如何直接在 PC 端获取其它端设备的 UserAgent 信息呢 [博主]反骨仔 [原文地址]http://www.cnblogs.com/liqingwen/p/5909615.html 序 希望收 ...
- asp.net获取服务端和客户端信息
asp.net获取服务端和客户端信息 获取服务器名:Page.Server.ManchineName获取用户信息:Page.User 获取客户端电脑名:Page.Request.UserHostNam ...
- WCF service 获取 client 端的 IP 和 port (转)
转帖记录一下,以便日后使用. 主要使用是.NET3.5里的服务端上下文的消息实例的RemoteEndpointMessageProperty属性,获取客户端地址信息.但是限制 的绑定是HTTP.TCP ...
- 客户端获取服务端自定义类数据 z
客户端获取服务端自定义类数据 问题一:超时问题,在最后获取数据的时候突然提示服务超时,服务已断开 解决:配置文件添加: <bindings> <wsHttpBinding> & ...
- jsp获取服务端的访问信息
获取服务端访问信息 public static String getUrl(HttpServletRequest request){ String url = ""; if(req ...
- ASP.NET获取用户端的真实IP
ASP.NET获取用户端的真实IP在各种场景都能用到,但是用户网端变幻莫测情况众多,获取真实IP还真是不容易啊.下面分享个比较好一点的方法: 获取IP初始版本 /// <summary> ...
- JAVA Socket获取服务端信息
1.Socket.getInetAddress(),获取服务端地址. 2.Socket.getPort(),获取服务端端口.
- asp.net获取浏览器端操作系统名称
/// <summary>/// 获取浏览器端操作系统名称/// </summary>/// <returns></returns>public sta ...
- 获取服务端https证书
最近开发一个需求,涉及获取服务端https证书.一般进行https调用我们都不太关心底层细节,直接使用WebClient或者HttpWebRequest来发送请求,这两种方法都无法获取证书信息,需要用 ...
随机推荐
- 破坏之王-DDoS攻击与防范深度剖析
破坏之王-DDoS攻击与防范深度剖析 下载:链接:https://pan.baidu.com/s/1bzVT6YkZGGg7anpQWDknjA 提取码:j7ns 网际空间的发展带来了机遇,也带来了威 ...
- [apue] 多进程管道读写的一些疑问
对于一对一的pipe: 1) 写进程关闭写管道后,读进程继续读管道会导致read返回0: 2) 读进程关闭读管道后,写进程继续写管道会激发SIGPIPE信号,若捕获,则write返回-1: 而对于多对 ...
- 2.秋招复习简单整理之String、StringBuffer、StringBuilder的区别和联系
String特点: 1.String是不可变对象,一旦赋值创建就不变,这意味着对String的一切修改将产生一个新的字符串,比如String的subString,replace.toUpperCase ...
- ~~函数基础(二):返回值&作用域~~
进击のpython 函数的返回值和作用域 上文我们讲到了函数的基础--参数的相关问题 举的例子也都是带有print的函数定义 但是有个问题就出现了:我不想打印这个函数处理后的参数 我想拿到这个参数然后 ...
- 搭建Spring Initializr服务器
前言 按照网上很多教程,出错特别多.首先是GitHub和maven仓库的网络环境比较差,踩了很多坑:其次是SpringInitializr更新迭代几个版本,0.7.0我也没能弄成功.索性就用了旧版本0 ...
- mplayer+ffmpeg 组合截图
mplayer截图的优点:对于一个时长很长的视频,可以任意指定一个时间点截图,mplayer会直接跳到这个时间点开始解码截图: 缺点:由于是直接跳到指定的时间点,也就是直接跳过了之前的帧,这样解码出来 ...
- ServiceFabric极简文档-3. 发布脚本
web: Trap { Write-Host $_.Exception.Message; Continue }; Connect-ServiceFabricCluster Remove-Service ...
- STM32F072从零配置工程-实现delay功能
因为是使用SysTick来作为延时时钟,因此在这里给出SysTick时钟的寄存器: CTRL:SysTick控制及状态寄存器 位段 名称 类型 复位值 描述 16 COUNTFLAG R/W 0 如果 ...
- Excel催化剂开源第47波-Excel与PowerBIDeskTop互通互联之第一篇
当国外都在追求软件开源,并且在GitHub等平台上产生了大量优质的开源代码时,但在国内却在刮着一股收割小白智商税的知识付费热潮,实在可悲. 互联网的精神乃是分享,让分享带来更多人的受益. 在Power ...
- Python教程资源
链接:https://pan.baidu.com/s/1zcCG4KJ8p4GI-x2c6PY2Ng 提取码:n2q2