乐趣区

关于软件测试:史上最全-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 的门路
  • 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() 切换不同的窗口句柄,对不同的页面来说;
    更多内容,咱们在后续文章分享。
退出移动版