Appium+python自动化14-查看webview上元素(DevTools)

 前言

app上webview的页面实际上是启用的chrome浏览器的内核加载的,如何把手机的网页加载到电脑上,电脑的chrome浏览器上有个开发模式DevTools,是可以方便调试的。

 

一、环境准备

1.手机上装一个chrome浏览器

2.电脑上装chrome浏览器

3.手机连电脑

 

二、启动adb服务

1.电脑上打开chrome浏览器输入:chrome://inspect/#devices

2.要是没加载到手机设备,就先启动adb服务,cmd输入:

>adb devices

 

二、DevTools

1.电脑上打开chrome浏览器输入:chrome://inspect/#devices

2.Discover USB devices这个要勾选的,可以检查到手机设备

3.Discover network targets 这个勾选,检查到网络

4.下图箭头指向的,是手机的设备名称

5.Webview in com.baidu.yuedu(39.0.00)这个是手机上浏览器的内核版本号39

(一般电脑上的chrome版本号最好要大于等于这个版本号)

 

三、查看元素

1.上图红色框框的两个地址就是加载到的webview的网页地址了,点地址下的inspect按钮,进入调试界面

(当然没有梯子爬的同学,打开是一片空白的,你懂得)

2.不会爬梯子的也没关系,把对应的url地址复制出来,重新打开一个浏览器标签,输入地址后,按F12也可以进调试界面。

3.接下来的元素定位就跟selenium的定位是一回事了。

 

 在学习过程中有遇到疑问的,可以appium+python QQ群交流:330467341

 

转载于:https://www.cnblogs.com/yoyoketang/p/7218393.html

<think>我们正在讨论使用Appium进行微信小程序自动化测试。根据引用资料,Appium进行小程序测试主要基于Hybrid App的测试方案,通过定位H5资源控件和屏幕坐标来操作元素。但这种方法只能作用于渲染层,无法深入逻辑层。 引用[3]提到,微信官方提供了Minium框架,结合微信开发者工具进行小程序自动化测试,这可能是更深入的方式。 因此,在回答中,我们应介绍Appium测试小程序的基本方法,同时指出其局限性,并建议参考微信官方框架。 回答结构: 1. 介绍Appium测试小程序的基本原理(基于Hybrid测试方案) 2. 详细步骤(环境配置、启动参数、定位元素等) 3. 代码示例 4. 局限性(只能测试渲染层,无法深入逻辑层) 5. 替代方案建议(Minium框架) 同时,根据指令,我们需要生成相关问题。 注意:在回答中适当引用给定的参考文献。</think>### 使用 Appium 进行微信小程序自动化测试的方法与实践 #### 一、基本原理 Appium 测试微信小程序的核心原理是**将小程序视为 Hybrid App 的 WebView 组件**进行处理。由于小程序运行在微信的渲染层(本质是 WebView 容器),Appium 通过以下方式实现操作: 1. **上下文切换**:在原生环境(NATIVE_APP)和 WebView 环境(WEBVIEW_com.tencent.mm)间切换 2. **控件定位**:使用 Chrome DevTools Protocol(CDP)解析 H5 元素 3. **坐标操作**:对无法定位的元素使用屏幕坐标点击 $$ \text{测试流程} = \text{启动微信} \rightarrow \text{进入小程序} \rightarrow \text{切换WebView} \rightarrow \text{操作元素} $$ #### 二、关键配置步骤 1. **环境准备**: ```bash npm install -g appium pip install Appium-Python-Client ``` 2. **Desired Capabilities 配置**: ```python caps = { "platformName": "Android", "deviceName": "emulator-5554", "appPackage": "com.tencent.mm", "appActivity": ".ui.LauncherUI", "chromedriverExecutable": "/path/to/chromedriver", # 必须匹配微信内置WebView版本 "noReset": True, "autoGrantPermissions": True } ``` 3. **Chromedriver 匹配**: - 微信内置 WebView 版本可通过 `chrome://inspect` 查看 - 下载对应版本驱动并指定路径(关键步骤,否则无法切换上下文)[^4] #### 三、核心代码实现 ```python from appium import webdriver # 启动会话 driver = webdriver.Remote('http://localhost:4723/wd/hub', caps) # 进入小程序 driver.find_element_by_accessibility_id("发现").click() driver.find_element_by_android_uiautomator('text("小程序")').click() driver.find_element_by_id("搜索框ID").send_keys("小程序名称") # 切换WebView上下文 webview = driver.contexts[-1] # 通常最后一个为小程序WebView driver.switch_to.context(webview) # 操作H5元素(示例:点击登录按钮) driver.find_element_by_css_selector(".login-btn").click() # 切回原生环境处理弹窗 driver.switch_to.context("NATIVE_APP") driver.find_element_by_id("android:id/button1").click() ``` #### 四、元素定位技巧 | 定位方式 | 适用场景 | 示例 | |-------------------|----------------------------|-------------------------------| | CSS Selector | 常规H5元素 | `driver.find_element_by_css_selector("#submit")` | | XPath | 复杂层级结构 | `//div[@class='menu']/button[1]` | | Accessibility ID | 原生组件 | `driver.find_element_by_accessibility_id("确认")` | | 坐标点击 | 无法定位的浮动元素 | `Tap(driver, x=300, y=500)` | #### 五、最佳实践 1. **混合上下文管理**: - 小程序启动阶段使用原生定位 - 功能操作阶段切换 WebView - 弹窗处理切回原生环境 2. **等待机制优化**: ```python # 显式等待WebView加载 WebDriverWait(driver, 30).until( lambda x: len(driver.contexts) > 1 ) ``` 3. **调试技巧**: - 使用 Chrome 访问 `chrome://inspect` 调试 WebView - 开启 Appium 的 `showChromedriverLog` 参数 #### 六、局限性说明 1. **渲染层限制**:只能操作界面元素,无法直接调用小程序逻辑层 API[^1] 2. **版本适配**:微信 WebView 升级需同步更新 Chromedriver 3. **性能问题**:元素定位速度慢于原生应用 > 💡 **替代方案建议**:对于深度测试需求,推荐结合微信官方框架 [Minium](https://minitest.weixin.qq.com/),该框架可直接访问小程序逻辑层和 AppService[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值