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

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

本系列文章汇总了从 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 的路径
  • selenium之 chromedriver与chrome版本映射表(更新至v2.46)_huilan_same的博客-CSDN博客_chromedriver 1
  • 这个网站的 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() 切换不同的窗口句柄,对不同的页面来说;
    更多内容,我们在后续文章分享。


喜欢软件测试的小伙伴们,如果我的博客对你有帮助、如果你喜欢我的博客内容,请 “点赞” “评论” “收藏” 一键三连哦!

相关文章
|
8天前
|
设计模式 前端开发 JavaScript
自动化测试框架设计原则与最佳实践####
本文深入探讨了构建高效、可维护的自动化测试框架的核心原则与策略,旨在为软件测试工程师提供一套系统性的方法指南。通过分析常见误区,结合行业案例,阐述了如何根据项目特性定制自动化策略,优化测试流程,提升测试覆盖率与执行效率。 ####
32 6
|
13天前
|
机器学习/深度学习 前端开发 测试技术
探索软件测试中的自动化测试框架选择与优化策略####
本文深入探讨了在当前软件开发生命周期中,自动化测试框架的选择对于提升测试效率、保障产品质量的重要性。通过分析市场上主流的自动化测试工具,如Selenium、Appium、Jest等,结合具体项目需求,提出了一套系统化的选型与优化策略。文章首先概述了自动化测试的基本原理及其在现代软件开发中的角色变迁,随后详细对比了各主流框架的功能特点、适用场景及优缺点,最后基于实际案例,阐述了如何根据项目特性量身定制自动化测试解决方案,并给出了持续集成/持续部署(CI/CD)环境下的最佳实践建议。 --- ####
|
14天前
|
Java 测试技术 持续交付
【入门思路】基于Python+Unittest+Appium+Excel+BeautifulReport的App/移动端UI自动化测试框架搭建思路
本文重点讲解如何搭建App自动化测试框架的思路,而非完整源码。主要内容包括实现目的、框架设计、环境依赖和框架的主要组成部分。适用于初学者,旨在帮助其快速掌握App自动化测试的基本技能。文中详细介绍了从需求分析到技术栈选择,再到具体模块的封装与实现,包括登录、截图、日志、测试报告和邮件服务等。同时提供了运行效果的展示,便于理解和实践。
55 4
【入门思路】基于Python+Unittest+Appium+Excel+BeautifulReport的App/移动端UI自动化测试框架搭建思路
|
11天前
|
JSON Java 测试技术
SpringCloud2023实战之接口服务测试工具SpringBootTest
SpringBootTest同时集成了JUnit Jupiter、AssertJ、Hamcrest测试辅助库,使得更容易编写但愿测试代码。
43 3
|
10天前
|
Java 测试技术 Android开发
探索自动化测试的奥秘:从入门到精通
【10月更文挑战第37天】本文将带你进入自动化测试的世界,从基础知识到实战案例,逐步揭示自动化测试的神秘面纱。我们将一起探讨如何利用代码来简化测试过程,提高效率,并确保软件质量。无论你是初学者还是有经验的开发者,这篇文章都能为你提供有价值的见解和技巧。让我们一起踏上这段探索之旅吧!
|
15天前
|
机器学习/深度学习 自然语言处理 前端开发
前端神经网络入门:Brain.js - 详细介绍和对比不同的实现 - CNN、RNN、DNN、FFNN -无需准备环境打开浏览器即可测试运行-支持WebGPU加速
本文介绍了如何使用 JavaScript 神经网络库 **Brain.js** 实现不同类型的神经网络,包括前馈神经网络(FFNN)、深度神经网络(DNN)和循环神经网络(RNN)。通过简单的示例和代码,帮助前端开发者快速入门并理解神经网络的基本概念。文章还对比了各类神经网络的特点和适用场景,并简要介绍了卷积神经网络(CNN)的替代方案。
|
16天前
|
运维 负载均衡 Ubuntu
自动化运维的利器:Ansible入门与实践
【10月更文挑战第31天】在当今快速发展的信息技术时代,高效的运维管理成为企业稳定运行的关键。本文将引导读者了解自动化运维工具Ansible的基础概念、安装步骤、基本使用,以及如何通过实际案例掌握其核心功能,从而提升工作效率和系统稳定性。
|
16天前
|
缓存 测试技术 Apache
告别卡顿!Python性能测试实战教程,JMeter&Locust带你秒懂性能优化💡
告别卡顿!Python性能测试实战教程,JMeter&Locust带你秒懂性能优化💡
32 1
|
20天前
|
前端开发 数据管理 测试技术
前端自动化测试:Jest与Cypress的实战应用与最佳实践
【10月更文挑战第27天】本文介绍了前端自动化测试中Jest和Cypress的实战应用与最佳实践。Jest适合React应用的单元测试和快照测试,Cypress则擅长端到端测试,模拟用户交互。通过结合使用这两种工具,可以有效提升代码质量和开发效率。最佳实践包括单元测试与集成测试结合、快照测试、并行执行、代码覆盖率分析、测试环境管理和测试数据管理。
37 2
|
21天前
|
前端开发 JavaScript 数据可视化
前端自动化测试:Jest与Cypress的实战应用与最佳实践
【10月更文挑战第26天】前端自动化测试在现代软件开发中至关重要,Jest和Cypress分别是单元测试和端到端测试的流行工具。本文通过解答一系列问题,介绍Jest与Cypress的实战应用与最佳实践,帮助开发者提高测试效率和代码质量。
31 2
下一篇
无影云桌面