appium+python 自动化测试:解决安卓系统双击问题——获取微信聊天内容
Appium + Python 自动化测试:解决安卓系统双击问题——获取微信聊天内容
在进行移动端自动化测试时,我们常常会遇到一些挑战性的问题。其中一个典型的问题是如何获取微信聊天内容,因为直接从会话窗口获取TEXT属性是不可能的,而转而用双击获取次级列表中的文字属性就变得迫切了。
需求
需求很简单:我们需要能够自动化地获取微信聊天内容,以便在测试中使用。然而,这个需求却带来了一个挑战性的问题:如何获取这些内容。
解决过程
1.尝试直接获取聊天项的内容首先,我们尝试直接获取聊天项的内容,使用 `getAttribute("text")` 方法。但是,这个方法返回的结果却让我们失望了,因为它总是返回一个空字符串或者None。
```pythonfrom appium import webdriver 配置Appium服务器desired_caps = {
"platformName": "Android",
"deviceName": "emulator-5554",
"appPackage": "com.tencent.mm",
"appActivity": ".ui.LauncherUI"
}
driver = webdriver.Remote(" desired_caps)
尝试直接获取聊天项的内容chat_item = driver.find_element_by_id("com.tencent.mm:id/...") 这里是微信中某个聊天项的IDprint(chat_item.get_attribute("text")) 总是返回空字符串或者None```
2.尝试使用其他属性接着,我们尝试使用其他属性,例如 `text`、`name` 和 `content-desc`。但是,这些属性也总是返回空字符串或者None。
```pythonprint(chat_item.get_attribute("text")) 总是返回空字符串或者Noneprint(chat_item.get_attribute("name")) 总是返回空字符串或者Noneprint(chat_item.get_attribute("content-desc")) 总是返回空字符串或者None```
3.使用双击获取次级列表中的文字属性最后,我们决定使用双击获取次级列表中的文字属性。首先,我们需要找到聊天项的父元素,然后再从父元素中获取次级列表中的文字属性。
```python 找到聊天项的父元素parent_element = chat_item.find_element_by_xpath("..")
从父元素中获取次级列表中的文字属性next_level_list = parent_element.find_elements_by_class_name("android.widget.TextView")
for item in next_level_list:
print(item.get_attribute("text"))
```
4.整合代码最后,我们将所有的代码整合起来,形成一个完整的脚本。
```pythonfrom appium import webdriver 配置Appium服务器desired_caps = {
"platformName": "Android",
"deviceName": "emulator-5554",
"appPackage": "com.tencent.mm",
"appActivity": ".ui.LauncherUI"
}
driver = webdriver.Remote(" desired_caps)
找到聊天项的父元素parent_element = driver.find_element_by_id("com.tencent.mm:id/...") 这里是微信中某个聊天项的ID 从父元素中获取次级列表中的文字属性next_level_list = parent_element.find_elements_by_class_name("android.widget.TextView")
for item in next_level_list:
print(item.get_attribute("text"))
driver.quit()
```
总结
通过上述步骤,我们成功地解决了安卓系统双击问题——获取微信聊天内容。这个脚本可以帮助我们自动化地获取微信聊天内容,以便在测试中使用。
聊天appium微信自动化自动化测试TouchActionandroid双击