1。目标场景是十一长假。相信大部分的朋友都会在国内或者在路上流浪。朋友圈将成为你表演的场所。当然,也有一些朋友选择在家蹲着。你觉得无聊吗?想出去参加朋友圈摄影大赛吗?这篇文章的目的是用Python带我们去环球旅行,赢得这场朋友圈摄影大赛。二、准备工作在开始编写脚本之前,需要做以下准备工作:1、root过的Android手机一部2、配置AndroidADB开发环境3、在Python虚拟环境中安装pocoui依赖库4、虚拟位置应用程序FackLocation5.选择一个景点,下载相应景点的一些照片,准备一段装逼的文字3、编写代码分6步完成这个操作,即:通过位置获取经纬度,开启虚拟定位服务,导入图片到手机相册,打开朋友圈,选择相册图片,编辑内容选择地理位置,发布朋友圈。首先使用adb命令获取FackLocation和微信的应用包名和LaunchActivity。adbshelldumpsys活动|grep-irun得到应用包名和LaunchActivity后,可以很方便的打开FackLocation应用,使用Airtest和Monitor工具添加地理位置。到达搜索界面后,在Monitor下找不到搜索结果。因此,这里借助开发者选项中的指针位置,获取列表中第一项的坐标,使用adb进行一次点击操作,即可完成选择经纬度的操作。def__mock_location(self):"""Mocklocation:return:"""home()stop_app(package_name_location)start_my_app(package_name_location,activity_location)#点击添加locationself.poco('com.lerist.fakelocation:id/fab').click()#点击搜索self.poco('com.lerist.fakelocation:id/m_item_search').click()#在输入框中输入目的地self.poco('com.lerist.fakelocation:id/l_search_panel_et_input')。set_text(self.location)sleep(2)#宽,高size=self.poco.get_screen_size()#由于找不到选择结果的UI树,所以这里使用坐标来执行点击操作adb_click(500,283)#确定位置whileself.poco('com.lerist.fakelocation:id/a_map_btn_done').exists():self.poco('com.lerist.fakelocation:id/a_map_btn_done').click()Step2,通过元素文本内容判断服务是否开启,如果没有,则一键完成定位服务的开启。def__start_mock(self):"""打开模拟位置:return:"""mock_element=self.poco('com.lerist.fakelocation:id/f_fakeloc_tv_service_switch')ifmock_element.get_text()=='Startmock':mock_element.click()#等待启动模拟完成self.poco('com.lerist.fakelocation:id/f_fakeloc_tv_service_switch',text='停止模拟').wait_for_appearance()else:passprint('模拟已开启')第三步,使用adbpush命令将PC上的图片导入到手机相册目录中。#本地等待发送图片文件=get_all_files('./image/')#待发送图片总数self.image_num=9iflen(files)>9elselen(files)#手机相册目录phone_image_path='sdcard/DCIM/Camera/'#将图片一张一张导入手机相册forfilesinfiles[:self.image_num]:exec_cmd('adbpush%s%s'%(file,phone_image_path))需要注意的是导入图片后,需要再次发送刷新广播,这样才能在相册中找到这些图片。#更新手机相册exec_cmd('adbshellambroadcast-aandroid.intent.action.MEDIA_SCANNER_SCAN_FILE-dfile:///%s'%phone_image_path)第4步,同样使用Airtest打开微信客户端,然后自动跳转到到朋友圈界面。def__open_friend_circle(self):"""打开朋友圈:return:"""#等待微信App完全打开self.poco(text='WeChat').wait_for_appearance()self.poco(text='Contacts').wait_for_appearance()self.poco(text='Discovery').wait_for_appearance()self.poco(text='I').wait_for_appearance()print('微信全开')#点击【发现】标签self.poco('com.tencent.mm:id/djv',text='Discovery').parent().click()#打开朋友圈self.poco('android:id/title',text='朋友圈').click()#等待朋友圈动态加载完成self.poco('com.tencent.mm:id/eyx').wait_for_appearance()第五步,从手机相册中选择一张图片。手机相册中的照片是按时间排序的。根据上面推送的图片数量,选择相册前面的具体图片数量。#选择指定数量的照片cbs=self.poco('com.tencent.mm:id/ek8').offspring('com.tencent.mm:id/bwn')index=0#选择固定数量的照片forcbincbs:ifindex
