app自动化测试(八) appium APP H5 页面测试

现在市面上大量的app都有内嵌H5页面的情况。也就是许多的app采用的Hybrid混合应用。
那么我们遇到H5页面的时候我们要怎么进行测试呢?
首先我们要懂的怎么判别app里面的某一个页面是不是h5的web页面

  1. 使用appium的检查器对source中class进行查看,是否为 "android.webkit.WebView"
  2. 凭经验的话页面上方有关闭按钮等


    image.png

另外还有一个条件就是需要打开webview的debug模式:

要求开发同学在源码中加入以下代码
无源码的其他产品可以参考
https://www.cnblogs.com/yyoba/p/11149614.html
若未打开webview的debug模式,将无法获取到页面上下文

if (0 != (getApplicationInfo().flags & ApplicationInfo.FLAG_DEBUGGABLE)) {
    WebView.setWebContentsDebuggingEnabled(true);
}

以下两款是我们特别要使用到的工具

若webview未开启debug模式以下两个工具也无法获得任何信息

一款是谷歌原生的网页检查器(但因为一些问题可能有部分人无法使用)

chrome://inspect/#devices

image.png

点击inspect后进入详情,此时跟我们做ui自动化时常用的 chrome开发者工具是一样的,用法也一样
image.png

另一款是UC团队开发的网页检查器(win、linux、mac)都支持但是需要下载

https://dev.ucweb.com/download/?spm=ucplus.11199946.c-header.6.53974692oQhbSQ

image.png

image.png

image.png

进入inspect后,跟chrome开发者工具是一样的用法,在这里将转变成 web端的UI自动化

如何从native进入webview呢?

以下是实例:

# 启动参数需增加 desired_caps["chromedriverExecutable"] = 'D:\\code\\softspace\\66-68\\chromedriver.exe'
# 增加chromedriver驱动,驱动版本看上方两个工具的提示去下载


def switch_to_context():
    loc = (MobileBy.CLASS_NAME, "android.webkit.WebView")
    WebDriverWait(driver, 30).until(EC.visibility_of_all_elements_located(loc))  # 等待webview页面加载,因为是在另一个context中所以监控无效,可去除该等待
    time.sleep(5)  # 因为无法监控,加上web页面加载比较慢所以等待时间比较长
    # 获取页面所有的上下文
    cons = driver.contexts  # ['NATIVE_APP', 'WEBVIEW_com.qq.qqke']
    # 获取当前窗口的上下文
    current = driver.context  # NATIVE_APP
    cons.remove(current)  # 移除当前上下文(仅适用于在webview页面仅会出现两个上下文的情况)
    driver.switch_to.context(*cons)  # 进入webview(WEBVIEW_com.qq.qqke)
    if current != driver.context:
        print("进入webview成功")
    else:
        print("进入webview失败")
# 进入webview后里面的所有自动化操作都可以按ui自动化的操作执行

你可能感兴趣的:(app自动化测试(八) appium APP H5 页面测试)