webview测试与微信小程序基础

建议用edge,和chrome一样还不用fq

校长能不能把代码的git地址再贴一下 之前都没拉过代码 :joy:

https://github.com/ceshiren/JavaSDET3

我的怎么看不到雪球的webview?

看不到是因为没有chromedriver,那么这个chromedriver是安装在哪里的?

chrome://inspect/#devices可以用mumu模拟器吗

:pray:谢谢

请问老师,那webview的元素定位是建议用chrome inspect呢还是用uiautomator这种原生结构定位方式?
或者二者的利弊能大概再总结一下吗?

最近在测试MAC PC客户端,采用原生的壳子+web浏览器(debug模式下可以打开跟Chrome一样的开发者工具),我想做自动遍历,感觉跟今晚讲的原理差不多,但是不知道怎么去驱动客户端。老师,可以给点建议吗?

实际测试开发过程中怎么快速判断当前页面是原生应用还是webview控件、还是toast等其它类型的控件呢? 比如企业微信中日程页面有一个时间选择控件(time-picker),用uiautomatorviewer 和 mumu 的inspector都识别不到,不直到怎么能快速判断这个是啥控件

老师课堂答疑,mumu不可以

看class属性,class一般可以表示控件最原始的类型。如果是android.view.View,那么就是复杂的自定义控件了,这种实现会比较麻烦,可以通过相对坐标去点击。识别内容会比较麻烦。

老师, 为什么inspect页面, 是空白

估计需要fq下

1、虚拟机上直接打开雪球app一直跳转到登录页面
2、idea运行的时候打开雪球app也是一直跳转到登录页面
3、试了各种版本的雪球雪球App,虚拟机也试了安卓7.0 7.11 8.0 10 ,一直是这样,求解决

我是模拟器浏览器访问百度,然后搜索 雪球app下载 ,进入如下页面,下载后在模拟器里面安装;打开雪球时不会显示登录页面;你可以试试~
image

课后作业

遗留问题:

  1. 测试用例无断言,打算通过获取toast来判断,但需要在返回PO前判断是否需要切换回NATIVE_APP
  2. 缺少对正常、异常的情况的处理,目标是无论哪种情况,是否切换了context,是否切换了window,封装的方法应该都能适当根据PO返回原生APP

https://github.com/vankillua/hogwarts-test/blob/master/AppiumTest/src/main/java/com/vankillua/snowball/page/TradePage.java

遇到的问题(通过下方同学的方式解决此问题

使用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
过程遇到的坑

  1. 点击交易后找不到webview,点击“A股开户”后才出现
  2. 模拟器突然无法找到webview了,无论是否加sleep,打印出来的context一直都是native_app
  • 结论:同一份代码无缘无故可以后来又出现失效,看起来识别模拟器上的webview context不稳定。

解决问题

  • 顺着是否有某种方法能打开模拟器webview开关的想法,搜索发现这种办法比较合适(稍微麻烦但是确实可行),参考文章:混合 App 打开 H5 调试开关
  • 结果如图:已经可以获取到webview 上下文,接下来下载指定版本合适的chromedriver即可。
  • image
  • image
2 个赞

完成作业:使用webview方式完成雪球交易页面A股开户的代码实现和测试

  • TradePage

https://github.com/lanqiushou/hogwarts/blob/master/JavaSDET3/src/main/java/test_app/xueqiu/page/TradePage.java

  • BasePage

https://github.com/lanqiushou/hogwarts/blob/master/JavaSDET3/src/main/java/test_app/xueqiu/page/BasePage.java

作业:
webview

理解了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