需要注意的是,数据库中 rcontact 表的数据比较杂乱,除了正常的好友数据,黑名单好友、已删除好友、公众号、微信群等数据也包含在内,需要我们通过 type 和 verifyFlag 字段进行筛选 。
文章插图
为了便于 Python 操作,最后将查询的好友数据写入到 csv 文件中 。
/*** * 写入数据到csv中 * @param output_path * @param contacts */public static void writeCsvFile(String output_path, List<Contact> contacts){ try { File file = new File(output_path); //删除之前保存的文件 if (file.exists()) { file.delete(); } BufferedWriter bw = new BufferedWriter(new FileWriter(file, true)); // 添加头部名称 bw.write("userName" + "," + "alias" + "," + "nickName"); bw.newLine(); for (int i = 0; i < contacts.size(); i++) { bw.write(contacts.get(i).getUserName() + "," + contacts.get(i).getAlias() + "," + contacts.get(i).getNickName()); bw.newLine(); } bw.close(); } catch (IOException e) { e.printStackTrace(); }}
第 2 步,我们需要模拟给好友转账,来判断这个好友关系是否正常 。首先,我们需要初始化 Airtest,然后利用 adb 把第 1 步生成的数据从手机里导出到本地 。
def __init_airtest(self): """ 初始化Airtest :return: """ device_1 = Android('822QEDTL225T7') # device_1 = Android('emulator-5554') connect_device("android:///") self.poco = AndroidUiautomationPoco(device_1, screenshot_each_action=False) auto_setup(__file__)def export_wx_db_from_phone(target_path): """ 从手机中导出通信录数据 :param target_path: :return: """ # 微信通信录数据 wx_db_source_path = "/data/data/com.xingag.crack_wx/wx_data.csv" # 导出到本地 os.popen('adb pull %s %s' % (wx_db_source_path, target_path))
然后就是一系列自动化操作 。打开微信,遍历好友列表,拿到每一个好友的微信号去搜索好友,跳转到好友的聊天界面 。
def __to_friend_chat_page(self, weixin_id): """ 点击到一个好友的聊天界面 :param weixin_id: :param weixin_name: :return: """ # 1、点击搜索 element_search = self.__wait_for_element_exists(self.id_search) element_search.click() print('点击搜索') # 2、搜索框 element_search_input = self.__wait_for_element_exists(self.id_search_input) element_search_input.set_text(weixin_id) # 3、搜索列表 element_search_result_list = self.__wait_for_element_exists(self.id_search_result_list) # 3.1 是否存在对应的联系人,如果存在就在第一个子View布局下 # 注意:可能出现最常用的聊天列表,这里需要进行判断 index_tips = 0 for index, element_search_result in enumerate(element_search_result_list.children()): # 联系人的Tips # if element_search_result_list.children()[0].offspring(self.id_contact_tips).exists(): if element_search_result.offspring(text=self.text_contact_tips).exists(): index_tips = index break # 4、点击第一个联系人进入聊天界面 element_search_result_list.children()[index_tips + 1].click()
推荐阅读
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Excel删除重复值,你会吗?
- “瘦金体”由谁所创?
- 谁知道彩云红,红岁红茶?[红茶]
- 梦溪笔谈是谁写的? 梦溪笔谈作者
- cache文件夹可以删除吗?
- 朱棣把皇位传给了谁?
- 汉子哥是谁?
- 人民法院审理案件由谁来审理?
- 乱七八糟的Excel空行,怎么删?
- 清朝初期中国地图 清朝第一张地图是谁绘制的