appium+python 自动化测试:解决安卓系统双击问题——获取微信聊天内容

用APPIUM的同学,如果你需要双击了,说明你已经很孤独了~!!

 

需求:获取微信聊天内容,因为无法直接从会话窗口获取TEXT属性,转而用双击获取次级列表中的文字属性。

解决过程:

1.尝试直接获取聊天项的内容,发现 getAttribute(“text”),text,name,content-dist 都TM的不行...(自定义UI控件 不知道其属性名称)

2.发现双击后的activity 的view 控件可以获取到text属性

3.各种方式双击,开多线程并发,swip tap 不行。

 

祭出答案:

TouchAction(self.driver).press(el=None, x=a, y=b, pressure=0.25).release().perform().wait(110).press(
    el=None, x=a, y=b, pressure=0.25).release().perform()

el是控件 find_element....获取到的那种控件,x,y 坐标 pressure是压力值 

因为appium底层一部分是TouchAction 直接调用它,延时较少,这个perform+wait+perform 估计是一条指令 能比较好的执行,注意:wait后面的毫秒数根据机器不同需要调整的。

 

如果你看懂了 大约为你节约20小时左右的debug时间。

 

### 使用 Appium 自动化测试或控制微信 #### 安装配置环境 为了实现通过 Appium微信进行自动化测试,需先完成一系列必要的安装与配置工作。这包括但不限于安装 Node.js 和 Appium 本身,在此之后还需确保 ChromeDriver 正确放置于指定路径下以便支持某些特定功能的调用[^1]。 对于驱动文件的具体处理方式如下:应将下载得到的 `chromedriver` 文件置于 Appium 的安装目录内相应的位置,例如位于 Windows 系统中的默认路径可能是类似于 `C:\Users\Administrator\AppData\node_modules\appium\node_modules\appium-chromedriver\chromedriver` 这样的地址;确认无误后可以通过双击该驱动程序来验证其版本信息是否正常展示出来。 #### 编写 Python 脚本初始化 WebDriver 实例 借助 Python 结合 Appium 来启动并操控微信应用程序时,首先要创建一个 Webdriver 的实例对象,并设置好相应的 Desired Capabilities 参数用于描述待测目标的信息(如平台名称、设备型号等),这部分准备工作可通过下面给出的一段简单的代码片段体现: ```python from appium import webdriver desired_caps = { 'platformName': 'Android', 'deviceName': 'emulator-5554', 'appPackage': 'com.tencent.mm', 'appActivity': '.ui.LauncherUI' } driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps) ``` 这段脚本定义了一个名为 `desired_caps` 的字典变量用来存储各种参数选项,其中指定了要运行的应用包名 (`appPackage`) 及入口 Activity 名称 (`appActivity`) ,这些都是针对微信应用特有的属性值设定[^2]。 #### 执行基本交互动作 一旦成功建立了连接到微信客户端的会话,则可利用封装好的 API 接口执行诸如点击按钮、输入文字之类的常规 UI 操作。考虑到 Appium 继承自 Selenium 架构的优势所在,除了继承后者所提供的标准指令集外还额外增加了许多专属于移动端特性的命令接口,像模拟多点触摸事件或是改变屏幕方向等功能均得以实现。 例如想要发送消息给好友列表里的某个人,可以按照以下伪代码逻辑来进行操作: ```python search_box = driver.find_element_by_id("com.tencent.mm:id/b9k") # 查找搜索框元素 search_box.click() # 单击选中它 search_box.send_keys("张三") # 输入联系人的名字作为查询条件 contact_item = driver.find_element_by_android_uiautomator( 'new UiSelector().textContains("张三")') # 寻找匹配项 contact_item.click() # 敲定选择打开聊天界面 message_input_area = driver.find_element_by_id("com.tencent.mm:id/aft")# 获取文本编辑区域句柄 message_input_area.set_text("你好啊!") # 键入问候语句 send_button = driver.find_element_by_id("com.tencent.mm:id/an2") # 定位发送键图标 send_button.click() # 发送出去 ``` 上述过程展示了怎样定位页面上不同类型的组件并通过它们触发预期的行为序列,从而达到自动化的交流目的。
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值