背景:

在做移动端自动化测试的时候,经常会遇到一个问题就是获取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问题的更多相关文章

  1. 如何直接在 PC 端获取其它端设备的 UserAgent 信息呢?

    如何直接在 PC 端获取其它端设备的 UserAgent 信息呢 [博主]反骨仔 [原文地址]http://www.cnblogs.com/liqingwen/p/5909615.html 序 希望收 ...

  2. asp.net获取服务端和客户端信息

    asp.net获取服务端和客户端信息 获取服务器名:Page.Server.ManchineName获取用户信息:Page.User 获取客户端电脑名:Page.Request.UserHostNam ...

  3. WCF service 获取 client 端的 IP 和 port (转)

    转帖记录一下,以便日后使用. 主要使用是.NET3.5里的服务端上下文的消息实例的RemoteEndpointMessageProperty属性,获取客户端地址信息.但是限制 的绑定是HTTP.TCP ...

  4. 客户端获取服务端自定义类数据 z

    客户端获取服务端自定义类数据 问题一:超时问题,在最后获取数据的时候突然提示服务超时,服务已断开 解决:配置文件添加: <bindings> <wsHttpBinding> & ...

  5. jsp获取服务端的访问信息

    获取服务端访问信息 public static String getUrl(HttpServletRequest request){ String url = ""; if(req ...

  6. ASP.NET获取用户端的真实IP

    ASP.NET获取用户端的真实IP在各种场景都能用到,但是用户网端变幻莫测情况众多,获取真实IP还真是不容易啊.下面分享个比较好一点的方法: 获取IP初始版本 /// <summary> ...

  7. JAVA Socket获取服务端信息

    1.Socket.getInetAddress(),获取服务端地址. 2.Socket.getPort(),获取服务端端口.

  8. asp.net获取浏览器端操作系统名称

    /// <summary>/// 获取浏览器端操作系统名称/// </summary>/// <returns></returns>public sta ...

  9. 获取服务端https证书

    最近开发一个需求,涉及获取服务端https证书.一般进行https调用我们都不太关心底层细节,直接使用WebClient或者HttpWebRequest来发送请求,这两种方法都无法获取证书信息,需要用 ...

随机推荐

  1. POJ 1743:Musical Theme(后缀数组+二分)

    题目链接 题意 有N个音符的序列来表示一首乐曲,每个音符都是1到88范围内的整数,现在要找一个重复的主题."主题"是整个音符序列的一个子串,它需要满足如下条件: 长度至少为5个音符 ...

  2. 分布式事务(2)---TCC理论

    分布式事务(2)---TCC理论 上篇讲过有关2PC和3PC理论知识,博客:分布式事务(1)---2PC和3PC理论 我的理解:2PC.3PC还有TCC都蛮相似的.3PC大致是把2PC的第一阶段拆分成 ...

  3. c++学习书籍推荐《C++编程思想第二卷》下载

    百度云及其他网盘下载地址:点我 编辑推荐 <C++编程思想>(第2卷)是惟一一本如此清晰地阐述如何重新思考以面向对象方法构造程序的书籍.<C++编程思想>(第2卷)介绍实用的编 ...

  4. IDM 6.27.5(Internet Download Manager)中文破解版下载神器

    IDM一直是我最喜欢的下载工具,感觉用的比迅雷爽,简单使用,对付网盘有一套.IDM(Internet Download Manager)和迅雷的下载提速方式不同,从原理上来说,IDM速度较稳定,迅雷下 ...

  5. Azkaban Condition Flow (条件工作流) 使用简介

    本文上接<Azkaban Flow 2.0 使用简介>,对Azkaban Condition Flow (条件工作流) 做简单介绍 目录 目录 条件工作流 介绍 作用 使用方式 支持的运算 ...

  6. 大数据 SQL Boy 脱坑指南

    不可否认的是 SQL 是一个伟大的发明,它让增删改查的操作更加地便捷化,而且 SQL 的学习成本相对其他编程语言来说较低,被逼到会写 SQL 的运营和产品我都见过不少... 大数据行业跟 SQL 更是 ...

  7. ~~函数基础(七):生成器&迭代器~~

    进击のpython 生成器 上来说个这,就有点抽象了! 我们先整点活儿 宁,准备好了吗? 直接相位猛冲! 列表生成器 需求来了,老弟!我有一个数组 a = [1, 2, 3, 4, 5, 6, 7, ...

  8. android_layout_linearlayout(一)

    这几天一直在研究线性布局这块,记录下一些研究心得,作为参考之用. 一.金刚钻:(线性布局,英文名 linearLayout) 布局xml文件中统大者是一个线性布局,它的长宽都已经fill_parent ...

  9. Centos7 下nginx 搭建文件图片服务器

    现在服务器部署nginx yum install -y epel-release yum install nginx -y 安装完成之后 访问ip 由此可见nginx服务是可用的 修改nginx的配置 ...

  10. Unity3D 学习笔记一

    安装Unity3D 环境 1 进入Unity3D 官网 http://unity3d.com/cn/ 找到获取 Unity 进去之后点击下载 2.下载完成之后进行安装,由于新的版本采用在线安装方式所以 ...