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来发送请求,这两种方法都无法获取证书信息,需要用 ...
随机推荐
- 微服务-springboot-activiti工作流
idea中安装aciviti并使用,链接地址:https://blog.csdn.net/qq_41728540/article/details/79506463 一.创建springboot项目,勾 ...
- POJ 1485:Fast Food(dp)&& 面试题
题目链接 题意 给出 n 个餐厅,m 个停车场,现在要将 n 个餐厅中的 m 个变成停车场,使得每个餐厅到最近的停车场的距离之和最短,输出哪个餐厅变成停车场和它服务哪些餐厅,还有最短距离之和. 思路 ...
- 基于SpringBoot从零构建博客网站 - 设计可扩展上传模块和开发修改头像密码功能
上传模块在web开发中是很常见的功能也是很重要的功能,在web应用中需要上传的可以是图片.pdf.压缩包等其它类型的文件,同时对于图片可能需要回显,对于其它文件要能够支持下载等.在守望博客系统中对于上 ...
- python 多个装饰器的调用顺序
python 多个装饰器的调用顺序 一般情况下,在函数中可以使用一个装饰器,但是有时也会有两个或两个以上的装饰器.多个装饰器装饰的顺序是从里到外(就近原则),而调用的顺序是从外到里(就远原则). 原代 ...
- 关于使用 AJax 生成Form表单,且表单提交需要验证,验证实效的解决方法
@Ajax.ActionLink("添加", "AddUser",new AjaxOptions() {InsertionMode = InsertionMod ...
- python 之 并发编程(守护进程、互斥锁、IPC通信机制)
9.5 守护进程 主进程创建守护进程 其一:守护进程会在主进程代码执行结束后就立即终止 其二:守护进程内无法再开启子进程,否则抛出异常:AssertionError: daemonic process ...
- youku_androidid
youku_androidid = 1310; imei screenwidth screenhight
- React躬行记(9)——组件通信
根据组件之间的嵌套关系(即层级关系)可分为4种通信方式:父子.兄弟.跨级和无级. 一.父子通信 在React中,数据是自顶向下单向流动的,而父组件通过props向子组件传递需要的信息是组件之间最常见的 ...
- 个人永久性免费-Excel催化剂功能第30波-工作表快捷操作(批量创建、命名、排序、工作表目录)
日常使用Excel过程中,最多的操作无外乎单元格和工作表的操作,单元格的操作在前面已经有详细的辅助功能提供,此篇提供工作表相关的操作.这两项的操作若能有提速,日常大量的工作叠加起来真是省下不少时间. ...
- BeautifulSoup库整理
BeautifulSoup库 一.BeautifulSoup库的下载以及使用 1.下载 pip3 install beautifulsoup4 2.使用 improt bs4 二.BeautifulS ...