Appium混合应用h5 webiew测试

# Appium混合应用h5 webiew测试

# 什么是混合应用 Hybrid App

原生应用是使用系统原生的组件开发的 app,需要特定的语言,比如 android 的 java/kotlin, ios 的 swift/object-c。

H5 技术可以使用 web 技术开发 app,原生和 h5 的组合就成了混合应用。混合应用不是在app上直接写 HTML 页面,而是把 H5 页面放在一个 webview 控件当中。

webview 是原生应用的一种控件,还有其他 ImageView 等等。Webview 能做到和 web 页面交互的功

# 如何判断一个页面是 web

  • web dev 调试工具 uc-tools 或者 chrome inspect可以查看到
  • 响应速度,如果很快加载完成,大半是原生,如果加载比较慢,多半H5
  • 元素的 class 为 webview
  • 有 x 图标
  • uiautomatorviewer 等辅助工具难以定位
  • 进度条。

# 混合应用测试准备条件

  • apk 设置,找开发开启 webview 调试模式。app 设置 setWebContentsDebuggingEnabled=True
  • Webdriver / chromedriver.exe
  • 调试工具

资料

# webview 测试步骤

  • 通过 uiautomatorviewer 定位原生应用控件
  • appium 操作到 web 页面
  • 上下文切换
  • 通过 uctool 定位 web 页面
  • 退回原生页面,切换回原生。

切换上下文

1、driver.switch_to.context(context)

2、切换至默认的:driver.switch_to.context(None)

  • driver.contexts.last
  • driver.contexts.first
  • driver.context
  • driver.switch_to.context()
  • 如果一开始就是在 webview ,可以设置 desired_caps["autoWebview"] = True

chromedriver.exe

  • 路径配置
  • chromedriverExecutableDir: r"D:\chrome_driver"
  • chromedriverExecutable: r"D:\chrome_driver\chromedriver.exe"

# 网页定位

  • uc-devtools,
  • 设置改成 本地 Dev.
  • 手机上的chrome浏览器版本要和driver驱动对应。否则会说没有 chromedriver,放到 appium 对应的目录下面。
  • adb shell dumpsys activity | find "mFocusedActivity"

# 案例

from appium.webdriver import Remote

caps = {
    "platformName": "Android",
    "chromedriverExecutableDir": r"D:\data\chromedriver",
    "deviceName": "Android Emulator",
    "appActivity": ".activity.MainActivity",
    "appPackage": "com.lemon.lemonban",
}

driver = Remote(desired_capabilities=caps, command_executor='http://127.0.0.1:4723/wd/hub')
driver.implicitly_wait(10)

# 点击师资团队进入 web 页面
driver.find_element('xpath',"//*[@text='师资团队']").click()
# 打印所有的上下文
print(driver.contexts)
# 上下文切换
driver.switch_to.context('WEBVIEW_com.lemon.lemonban')
# 注意:有时候一个页面会包含多个标签
print(driver.window_handles)
# 点击菜单
driver.find_element('id','m-header__nav').click()

案例2:

本文完,感谢你的耐心阅读,如有需要可加我微信,备注「博客」并说明原因,我们一起进步,下次见。

上次更新: 2022/05/31, 07:30:39
最近更新
01
02-Cypress如何在写代码时获取提示
08-27
02
02-Cypress安装
08-27
03
0-Python怎么才能快速学好
08-27
更多文章>