千家信息网

怎么用Python实现环球旅行

发表于:2024-11-23 作者:千家信息网编辑
千家信息网最后更新 2024年11月23日,这篇文章主要讲解了"怎么用Python实现环球旅行",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"怎么用Python实现环球旅行"吧!1、.准备工作在开
千家信息网最后更新 2024年11月23日怎么用Python实现环球旅行

这篇文章主要讲解了"怎么用Python实现环球旅行",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"怎么用Python实现环球旅行"吧!

1、.准备工作

在开始编写脚本之前,需要做如下准备工作:

1、一部 Root 后的 Android 手机

2、配置好 Android ADB 开发环境

3、Python 虚拟环境内安装 pocoui 依赖库

4、虚拟定位应用 FackLocation

5、选好一个景点,下载对应景点的一些照片,并准备一段优秀的文字

2、.编写代码

一共分6 个步骤来完成这次操作,分别是:通过位置拿到经度和纬度、开启虚拟定位服务、导入图片到手机相册、打开朋友圈、选择相册图片、编辑内容和选择地理位置、发布朋友圈。

首先,利用 adb 命令拿到 FackLocation 和微信的应用包名和 LaunchActivity。

adb shell dumpsys activity | grep -i run

拿到应用包名和 LaunchActivity 之后,利用Airtest和Monitor工具可以非常方便的打开 FackLocation 应用、添加地理位置。

到达搜索界面之后,由于搜索的结果在 Monitor 下找不到。

因此,这里借助开发者选项内的 指针位置,拿到列表第一项的坐标,利用 adb 执行点击操作,既可以完成选择经纬度的操作。

def __mock_location(self):     """     模拟定位     :return:     """     home()     stop_app(package_name_location)     start_my_app(package_name_location, activity_location)      # 点击添加位置     self.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)      # 确定位置     while self.poco('com.lerist.fakelocation:id/a_map_btn_done').exists():          self.poco('com.lerist.fakelocation:id/a_map_btn_done').click()

第2步,通过元素文字内容来判断服务是否开启,如果没有开启,就通过一次点击操作,完成定位服务的开启。

def __start_mock(self):     """     开启模拟位置     :return:     """     mock_element = self.poco('com.lerist.fakelocation:id/f_fakeloc_tv_service_switch')     if mock_element.get_text() == '启动模拟':          mock_element.click()          # 等待启动模拟完成          self.poco('com.lerist.fakelocation:id/f_fakeloc_tv_service_switch', text='停止模拟').wait_for_appearance()     else:          pass     print('模拟已经开启')

第3步,把 PC 端的图片利用 adb push 命令导入到 手机相册目录 下。

# 本地等待发送的图片 files = get_all_files('./image/')  # 一共待发送的图片数目 self.image_num = 9 if len(files) > 9 else len(files)  # 手机相册目录 phone_image_path = 'sdcard/DCIM/Camera/'  # 一张一张图片导入到手机相册内 for file in files[:self.image_num]:     exec_cmd('adb push %s %s' % (file, phone_image_path))

需要注意的是,导入图片后需要再 发送一次刷新广播,相册中才能找到这些图片。

# 更新手机相册 exec_cmd('adb shell am broadcast -a android.intent.action.MEDIA_SCANNER_SCAN_FILE -d file:///%s' % phone_image_path)

第 4 步,同样是利用 Airtest 打开微信客户端,然后自动化跳转到朋友圈界面。

def __open_friend_circle(self):     """     打开朋友圈     :return:     """     # 等待完全打开微信App     self.poco(text='微信').wait_for_appearance()     self.poco(text='通讯录').wait_for_appearance()     self.poco(text='发现').wait_for_appearance()     self.poco(text='我').wait_for_appearance()      print('微信完全打开')      # 点击【发现】Tab     self.poco('com.tencent.mm:id/djv', text='发现').parent().click()      # 打开朋友圈     self.poco('android:id/title', text='朋友圈').click()      # 等待朋友圈动态加载完全     self.poco('com.tencent.mm:id/eyx').wait_for_appearance()

第5步,从手机相册内选择图片。

手机相册的照片是按时间进行排序的,根据上面推送的图片数目,选择相册的前面的 具体数目 的照片即可。

# 选择指定数目的照片 cbs = self.poco('com.tencent.mm:id/ek8').offspring('com.tencent.mm:id/bwn')  index = 0  # 选中固定数目的照片 for cb in cbs:     if index < self.image_num:         cb.click()     else:         break     index += 1  # 确认选择图片 self.poco('com.tencent.mm:id/lm').click()

第6步,输入文字内容,并选择具体的位置。

由于虚拟定位刷新的不及时,为了保证位置的准确性,连续进行两次定位。

def __put_content_and_gps(self):   """   输入内容和定位   :return:   """   # 输入朋友圈内容   self.poco('com.tencent.mm:id/d3k').set_text(self.msg)    # 定位的次数,一般需要两次   location_count = 0    # 点击定位图标   while True:        self.poco('com.tencent.mm:id/d0a', text='所在位置').click()        # 等待搜索列表中有结果出现       self.poco('com.tencent.mm:id/du7').wait_for_appearance()        if location_count == 0:            # 返回            keyevent('BACK')            location_count += 1       else:            # 排除ListView的前两项(不显示、市区),直接点击第三项(具体位置)            self.poco('com.tencent.mm:id/dul').children()[2].click()

第 7 步,拿到顶部的发布按钮,就可以 一键发布动态了。

感谢各位的阅读,以上就是"怎么用Python实现环球旅行"的内容了,经过本文的学习后,相信大家对怎么用Python实现环球旅行这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是,小编将为大家推送更多相关知识点的文章,欢迎关注!

位置 图片 相册 定位 选择 手机 朋友 内容 照片 输入 环球 旅行 应用 搜索 数目 文字 目的 结果 准备 学习 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 数据库怎么提高访问速度 黄岛区神庙子网络技术服务部 专科计算机软件开发实习 来安工业软件开发技术销售厂 亚信科技 数据库维护工作 四级网络技术有多少套真题 僵尸毁灭工程服务器账号密码忘了 如何提高内部服务器安全 寸景网络技术工作室小号 嘉定区信息软件开发咨询热线 上海城管通软件开发公司 香蜜湖java软件开发 苹果手机怎么删除服务器上的图片 数据库设计的规范化设计 软件开发创业策划书 查看已经运行的数据库 网络安全法何时颁布执行 科技互联网加油站 大旗网络安全绘画 滨湖区软件开发口碑推荐 郭昊云中国农业银行软件开发中心 数据库用什么软件练习 王者荣耀的服务器域名 广州火舞软件开发股份有限 成都云车酷互联网科技有限公司 农业银行软件开发岗工资 网络安全职位公务员 安全的l2tp服务器租用 海南师范大学考研计算机网络安全 运城网络技术团队
0