建议用edge,和chrome一样还不用fq
校长能不能把代码的git地址再贴一下 之前都没拉过代码
chrome://inspect/#devices可以用mumu模拟器吗?
谢谢
请问老师,那webview的元素定位是建议用chrome inspect呢还是用uiautomator这种原生结构定位方式?
或者二者的利弊能大概再总结一下吗?
最近在测试MAC PC客户端,采用原生的壳子+web浏览器(debug模式下可以打开跟Chrome一样的开发者工具),我想做自动遍历,感觉跟今晚讲的原理差不多,但是不知道怎么去驱动客户端。老师,可以给点建议吗?
实际测试开发过程中怎么快速判断当前页面是原生应用还是webview控件、还是toast等其它类型的控件呢? 比如企业微信中日程页面有一个时间选择控件(time-picker),用uiautomatorviewer 和 mumu 的inspector都识别不到,不直到怎么能快速判断这个是啥控件
老师课堂答疑,mumu不可以
看class属性,class一般可以表示控件最原始的类型。如果是android.view.View,那么就是复杂的自定义控件了,这种实现会比较麻烦,可以通过相对坐标去点击。识别内容会比较麻烦。
估计需要fq下
1、虚拟机上直接打开雪球app一直跳转到登录页面
2、idea运行的时候打开雪球app也是一直跳转到登录页面
3、试了各种版本的雪球雪球App,虚拟机也试了安卓7.0 7.11 8.0 10 ,一直是这样,求解决
我是模拟器浏览器访问百度,然后搜索 雪球app下载
,进入如下页面,下载后在模拟器里面安装;打开雪球时不会显示登录页面;你可以试试~
课后作业
遗留问题:
- 测试用例无断言,打算通过获取toast来判断,但需要在返回PO前判断是否需要切换回NATIVE_APP
- 缺少对正常、异常的情况的处理,目标是无论哪种情况,是否切换了context,是否切换了window,封装的方法应该都能适当根据PO返回原生APP
遇到的问题(通过下方同学的方式解决此问题)
使用as模拟器(Android version 11)和mumu模拟器,打开雪球App,进入“交易”页面后,没有找到webview上下文,无法切换
-
inspect
工具没有显示WebView,无法知道chromium版本,所以也不知道要下载哪个版本的chromedriver -
getContextHandles
返回的只有 NATIVE_APP,没有 WEBVIEW_com.xueqiu.android -
getPageSource
返回的都有 android.webkit.WebView
课后作业:
https://github.com/Groot2001/appiumdemo/blob/master/src/main/java/test_app/xueqiu/page/TradePage.java
过程遇到的坑:
- 点击交易后找不到webview,点击“A股开户”后才出现
- 模拟器突然无法找到webview了,无论是否加sleep,打印出来的context一直都是native_app
- 结论:同一份代码无缘无故可以后来又出现失效,看起来识别模拟器上的webview context不稳定。
解决问题:
- 顺着是否有某种方法能打开模拟器webview开关的想法,搜索发现这种办法比较合适(稍微麻烦但是确实可行),参考文章:混合 App 打开 H5 调试开关
- 结果如图:已经可以获取到webview 上下文,接下来下载指定版本合适的chromedriver即可。
完成作业:使用webview方式完成雪球交易页面A股开户的代码实现和测试
- TradePage
- BasePage
理解了context和window的关系
也不知道自己理解的对不对,总结下来,请有经验的同学或者老师点评
context 与 window
context
context 可以理解为场景、或上下文,安卓中context是所有组件的对象, 安卓和java 不同,不是写一个方法一个main 就能运行, 安卓是有一个组件环境, 这些组件存在上下文关系的相互依赖,他们都继承context
window
安卓四大组件之一, activity ,可以理解成一个页面, 创建一个activity的时候,实际上先去创建了一个window,然后再在window上加载各种view, 通过phonewindow加载出页面ui
作业:
https://github.com/yule-qa/Hogwarts/blob/master/src/test/java/test_app/webview/WebView.java