史上最全 Appium 自动化测试从入门到框架实战精华学习笔记(三)

空空道人
• 阅读 485

本系列文章汇总了从 Appium 自动化测试从基础到框架高级实战中,所涉及到的方方面面的知识点精华内容(如下所示),希望对大家快速总结和复习有所帮助。
1.Appium 基础 1 (环境搭建和简介)
2.Appium 基础 2 (元素定位和元素常用方法)
3.Appium 基础 3 (手势操作和 uiautomator 查找元素)
4.Appium 基础 4 (显式等待)
5.Appium 基础 5 (toast 和参数化)
6.Appium 基础 6 (webview)
7.Appium_ 企业微信练习 (非 PO,增加和删除联系人)
8.Appium_ 企业微信练习 ( PO--增加联系人)

本文为第三篇,主要讲解 Appium Toast、参数化、WebView(附实例代码)。

  • 为了给当前视图显示一个浮动的显示块,与 dialog 不同它永远不会获得焦点;
  • 显示时间有限,根据用户设置的显示时间后自动消失;
  • 本身是个系统级别的控件,它归属系统 settings,当一个 App 发送消息的时候,不是自己造出来的这个弹框,它是发给系统,由系统统一进行弹框,这类的控件不在 App 内、需要特殊的控件识别方法;
  • Appium 使用 UIAutomator 底层的机制来分析抓取 toast,并且把 toast 放到控件树里面,但本身并不属于控件
  • AutoMationName:UIAutomator2 这个是 Appium 本身的设置就自带的,不需要额外添加,默认就是UIAutomator2;
  • getPageSource 是无法找到 Toast 的;
  • 必须使用 Xpath 去查找:
  • //*[@class="android.widget.Toast"]
  • //*[contains(@text,"xxxxx")]
  • adb shell dumpsys window | findstr mCurrent
  • 这个命令可以找到当前的 activity,不知道 Android 高版本是不是还 ok,由于 API Demo 权限高,可直接跳到这个 activity 运行,其他 App 就不 ok 了;
  • driver.page_source 可以打印当前的页面,可以找到 Toast 的伪控件;
  • 打印 toast 的 text 出来;
  • 参数化要解决的是一个用例可以复用的问题,比如一个用例重复使用不同的数据,就可以使用参数化,比如同一个用例,有搜索股价,比较股价,都是同一个方法,只是数据不太一样;
  • @pytest.mark.parametrize('searchkey,type,price',[
    ('alibaba','BABA',180),
    ('xiaomi','01810',10)
  • 用上面的方法去使用参数化;
  • def test_search(self,searchkey,type,price) 函数的参数要和参数化的参数的数量一样,字符串也要一样;
  • 一个用例,有2组参数化,就会运行两次 setup 和 teardown 的方法;
  • 使用 self.driver.find_element(By.ID,"com.xueqiu.android:id/search_input_text").send_keys(f"{searchkey}"),使用f"{searchkey}"是一个好东西,可以搭配参数化使用;
  • 手机端
  • 被测浏览器:(不可以是第三方浏览器)safari for ios and chrome,chromium,or browser for Android
  • PC 端
  • 安装 chrome 浏览器或者 chromium
  • 下载对应手机浏览器对应的 driver
  • 客户端代码:
  • "browserName":"Browser" 或者 "browserName":"Chrome" 这个是指定的浏览器
  • "chromedriverExecutable":r"c:\chrome\chromedriver.exe" 这个是指定的chromedriver的路径
  • 如何查找app的版本:adb shell pm dump com.android.browser | findstr version
  • desire_cap
  • 步骤:
  • 不通过包来打开浏览器
  • 访问百度
  • 输入 tongtong,并点击搜索
  • 注意:
  • 第一次运行 Appium,看后台的路径可以找到浏览器的 chromedriver 的版本,还可以找到 chromedriver 的路径
  • https://blog.csdn.net/huilan_...
  • 这个网站的 chromedriver 和 chrome 版本的关系更加全
  • 断网查看,如果断网显示网页加载不了就是 WebView
  • 看加载条,有加载条通常是 WebView
  • 看顶部是否有关闭按钮
  • 下拉刷新,页面有刷新就是 WebView
  • 下拉刷新的时候是否有网页提供者
  • 用工具查看,如果元素显示 WebView,则是 WebView
  • 是 Android 系统提供能显示页面的系统控件(特殊的 view)
  • < android4.4 WebView 底层实现 webkit 内部
  • =android4.4 采用 chromium 作为 WebView 底层支持,支持 HTML5、CSS3、JS
  • WebAudio:图形化的界面收听音频
  • WebGL:页面 3d 效果的渲染
  • WebRTC:直播等等,美颜
  • PC:
  • 能够访问 Google
  • 下载对应版本的 chromedriver
  • 手机端:应用代码需要打开WebView的开关
  • 代码中要添加 chromedriverExecutable
  • 有一些 WebView 可以被 UIAutomatorview 查找到,但都不推荐,可能会出现兼容性的问题,比如 text 的显示字符串会不一样
  • 如何查找当前 WebView 的网页
  • adb shell
  • logcat | grep http
  • 就能找到访问的 HTTP 了
  • 打开 API demo 的 WebView
  • 向输入框输入文本
  • 点击 i am link
  • 退出应用
  • 打开应用
  • 点击交易
  • 点击 A 股开户
  • 输入用户名和密码
  • 点击立即开户
  • 退出应用
  • 注:打开新的页面其实就是一个新的窗口了,要切换窗口句柄了
  • 设备
  • Android 模拟器 6.0 默认支持 WebView,mumu 直接打开了,不用设置;
  • 起码模拟器和物理机需要打开 App 内开关(WebView 调试开关);
  • PC 浏览器定位元素
  • Chrome 浏览器-62版本才可以更好的看见 webview 的内部,其他的版本都有一些 bug;
  • 换成 chromium 浏览器可以避免很多坑,展示效果和速度要比 chrome 要快;
  • 代码
  • 有的设备可以使用 find_element_acessibility_id(), 不同的设备渲染的页面不同,兼容性不适合;
  • switch_to.context() 切换不同的 context,一个页面来说;
  • switch.to_window() 切换不同的窗口句柄,对不同的页面来说;
    更多内容,我们在后续文章分享。
点赞
收藏
评论区
推荐文章
Stella981 Stella981
3年前
Katalon 学习笔记(一)
工具介绍:KatalonStudio是一个能提供一整套功能来实现Web,API和Mobile的全自动测试解决方案的自动化测试平台。KatalonStudio构建于开源Selenium和Appium框架之上,通过减少学习和集成这些框架以满足自动化测试需求所需的工作量和专业知识,使团队能够快速开始测试自动化。与其他流行工具
Stella981 Stella981
3年前
Python3+TensorFlow 打造人脸识别智能小程序
第1章课程导学本章节主要介绍课程的主要内容、核心知识点、课程涉及到的应用案例、深度学习算法设计通用流程、适应人群、学习本门课程的前置条件、学习后达到的效果等,帮助大家从整体上了解本门课程的整体脉络。第2章深度学习基础串讲(必备理论知识)主要介绍深度学习的基础知识,具体包括了深度学习的发展历程、基本概念(前向运算、反向传播、参数优化)、深度
Stella981 Stella981
3年前
Robot Framework 使用【1】
前言RobotFramework作为公司能快速落地实现UI自动化测试的一款框架,同时也非常适合刚入门自动化测试的朋友们去快速学习自动化,笔者计划通过从搭建逐步到完成自动化测试的过程来整体描述它的使用。RobotFramework环境搭建步骤RobotFramework
Wesley13 Wesley13
3年前
Unittest框架+ddt数据驱动+HTMLTestRunner+sendmail(自动发送测试报告)+git+Jenkins
本次写的是针对有代码基础的,没基础建议先去学基础,以下所有描述内容都是我已经在公司项目实践成功的!仅供参考整体思路:1、接口自动化用的是Python中unittest框架2、所有的测试数据用例存放Excel表3、封装一套读取和写入的Excel方法4、重写request方法(为了从Excel读取数据后对数据作分析和判断并在测
Stella981 Stella981
3年前
Android自动化性能收集
<h1Android自动化性能收集</h1<pAndroid功能测试自动化框架较多,UIAutomator,Robotium,Appium等。Case执行过程中,可能希望收集手机的性能指标,包括内存、cpu、流量等。使用javashellbat简单实现了android手机性能收集。</p<h2简述</h2<p过程很简单:</p
Stella981 Stella981
3年前
RobotFramework自动化测试之元素定位
前言:最近在做基于RF框架的Web自动化测试,其中涉及到元素的定位,主要用到id、name、xpath、css四中定位方法,尤其后面的两种方法特别有效,可以解决大部分的定位问题。
Stella981 Stella981
3年前
Chapter 3准备:基础设施与TA框架
持续集成、自动化测试进一步要求软件研发有一个良好的环境支撑,即本章要讨论的基础设施,包括虚拟技术与Docker技术、基础设施即代码、持续集成环境、单元测试TA框架、系统测试TA框架、验收测试TA框架(包括需求实例化与BDD框架)、DevOps工具链等。3.1虚拟机与容器技术虚拟机大大提高服务器利用率从数据中心空间、机柜、网线、耗
架构师日记-聊聊开发必掌握的那些实践技能 | 京东云技术团队
本文总结了软件开发过程中经常用到的基础常识,分为基础篇和实践篇两个篇章,其中基础篇中着重讲述了类,方法,变量的命名规范以及代码注释好坏的评判标准。实践篇中从类,方法以及对象三个层面分析了常见的技术概念和落地实践,希望这些常识能够为读者带来一些思考和帮助。