You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Appium提取Android应用Activity中的所有字符串用于翻译校验?

Appium提取Android页面字符串实现多语言校验方案

可行性结论

可以通过Appium实现Android应用单个Activity内所有可见字符串的批量提取,完全能满足你自动化遍历校验多语言翻译效果的需求。

核心实现逻辑

  • 首先通过Appium连接测试设备,启动目标应用后,调用driver.page_source接口即可获取当前Activity渲染后的完整布局XML数据,所有已加载到UI层的文本内容(包括按钮文案、普通文本、输入框提示语、选中状态文本等)都会在XML节点的text属性中存储。
  • 对拿到的XML数据做解析,遍历所有节点提取非空的text属性值,去重后就能得到当前页面的全量可见字符串。
  • 再搭配Activity自动遍历逻辑:可通过adb shell dumpsys activity activities命令提前获取目标应用的全量Activity列表,编写自动化脚本逐个跳转进入每个Activity,重复提取字符串的操作,即可覆盖全应用所有页面。

参考实现代码(Python版本)

from appium import webdriver
import xml.etree.ElementTree as ET

# Appium 连接配置
desired_caps = {
    "platformName": "Android",
    "deviceName": "测试设备序列号",
    "appPackage": "目标应用包名",
    "appActivity": "应用启动页Activity",
    "noReset": True,
    "unicodeKeyboard": True,
    "resetKeyboard": True
}
driver = webdriver.Remote("http://127.0.0.1:4723/wd/hub", desired_caps)

# 提取当前页面所有非空可见字符串
def fetch_current_page_strings():
    page_layout_xml = driver.page_source
    xml_root = ET.fromstring(page_layout_xml.encode('utf-8'))
    result = []
    for node in xml_root.iter():
        text_content = node.get('text')
        if text_content and text_content.strip():
            result.append(text_content.strip())
    # 去重后返回
    return list(set(result))

优化建议

  • 提取到的字符串可以和对应语言的strings.xml资源文件内容做自动比对,快速标记出未翻译、翻译错误、漏适配的文案。
  • 接口返回的动态文本不属于客户端内置翻译范畴,可单独做过滤或分类标注,避免误判。
  • 可以在每个Activity提取字符串的同时保存当前页面截图,方便后续核验问题时快速定位上下文。

内容的提问来源于stack exchange,提问作者phenomenal

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 14:24:04