Python 带你来一次说走就走的环球旅行

编写一个高质量的Python朋友圈动态 turtle库是一个非常有趣的库,它允许我们使用简单的命令来控制一个小乌龟在画布上移动,绘制各种形状。接下来,我设置了画布的背景颜色为黑色,并创建了一个小乌龟对象。今天我要分享一下我最近编写的一个高逼格的Python朋友圈动态。当我运行这段代码时,一个黑色的画布会弹出,并在画布上绘制出一个红色的矩形和白色的文字。这个动态将展示我的Python编程技能,并吸引朋友们的注意。然后,我使用画笔绘制了一个红色的矩形,并在矩形的中心位置写下了"Hello, Python!最后,我隐藏了小乌龟,并停止了画布的更新。 阅读详情

640?wx_fmt=jpeg

阅读文本大概需要 10 分钟。

1

目 标 场 景

十一长假,相信大部分的朋友这会应该是在全国各地浪或者是在浪的路上,朋友圈成为你们表演的场所。

当然,也有一小戳朋友是选择家里蹲,你们是否感觉到无聊?是否想出去浪,参加朋友圈摄影比赛?

本篇文章的目的是利用 Python 带我们实现一次 说走就走的环球旅行,完胜这次的朋友圈摄影比赛。

2

准 备 工 作

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

1、一部 Root 后的 Android 手机

2、配置好 Android ADB 开发环境

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

4、虚拟定位应用 FackLocation

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

3

编 写 代 码

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

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

adb shell dumpsys activity | grep -i run

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

640?wx_fmt=png

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

640?wx_fmt=png

因此,这里借助开发者选项内的 指针位置,拿到列表第一项的坐标,利用 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步,从手机相册内选择图片。

640?wx_fmt=png

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

# 选择指定数目的照片
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步,输入文字内容,并选择具体的位置。

640?wx_fmt=png

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

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()
           break

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

比如,我在深圳就发了一条在北京 TAM 看 YB 的朋友圈。

640?wx_fmt=png

4

结 果 结 论

跟着上面的操作,就能实现全国任意一个景点,随时随地去玩这一骚操作。

我已经将全部源码上传到后台上,关注公众号后回复「环球旅行」即可获得下载链接。

python-自动化Airtest-3IDE poco介绍 一 : AirTest Poco 介绍1> Poco 理解2> Poco 安装4> AirTest IDE Poco 介绍二: Poco 语法1> Poco 获取信息2> Poco 模拟操作8. pinch()3> 判断UI元素出现1. 等待UI元素出现3. 找不到元素就判断失败4> 获取UI信息1. 相对选择器2. 获取父节点、子节点3. 在子节点下-返回上级或多级父节点4. 空间顺序选择三: Airtest log。 阅读详情

相关推荐

投第一篇SCIE英文期刊(详细步骤)

一个投稿SCIE英文期刊的过程

weixin_48849679的博客 1万+

遗传算法实例解析(python)

一.简介 遗传算法(Genetic Algorithm, GA)是模拟达尔文生物进化论的自然选择和遗传机理的生物学进化过程的计算模型,是一种通过模拟自然进化过程搜索最优解的方法。 遗传算法以一种群体中的所有个体为对象,并利用随机化技术指导对一个被编码的参数空间进行高效搜索。其中,选择、交叉和变异构成了遗传算法的遗传操作;参数编码、初始群体的设定、适应度函数的设计、遗传操作设计、控制参数设定五个...

cocktail 5477

用Omniverse Kit开发第一个USD插件:从环境配置到实战案例(Python 3.7版)

本文详细介绍了如何使用NVIDIA Omniverse Kit和Python 3.7开发第一个USD插件,涵盖从环境配置到实战案例的全过程。通过创建可实时同步材质属性的USD插件,开发者可以快速掌握Omniverse开发框架,提升3D内容创作效率。

x8y9z0的博客 586

如何在各大平台下“模拟输入空格”

此文章来源于项目官方公众号:“AirtestProject” 版权声明:允许转载,但转载必须保留原链接;请勿用作商业或者非法用途 1. 前言 Airtest和Poco自动化框架分别提供了 text 接口和 set_text 接口帮助我们 实现文本输入的操作 。 但部分特殊字符,比如同学们经常问到的空格,使用这两个接口并不一定完全能满足我们的期望,所以下文我们将详细介绍这两个关于文本输入的接口,并介绍我们该如何 在各大平台下模拟输入空格 。 2. 输入文本的接口介绍 1)Airtest的text接口 在A.

AirtestProject的博客 1560

3D IC中Memory-on-Logic堆叠测试的DFT解决方案与工程实践

在半导体行业,随着摩尔定律逼近物理极限,3D IC技术通过芯片垂直堆叠实现性能提升和异构集成,已成为重要发展方向。其核心原理是利用硅通孔(TSV)或微凸块实现芯片间电气互连,将多个不同功能的芯片(如逻辑芯片与存储芯片)集成在一个封装内。这项技术的核心价值在于能大幅提升系统性能、降低功耗并实现更小的封装尺寸。然而,芯片堆叠后,传统的测试方法面临巨大挑战,尤其是测试访问存在物理屏障,无法直接探测被覆盖的芯片接口。为此,可测试性设计(DFT)成为确保3D IC可靠性与量产可行性的关键技术。它通过在设计阶段植入专用

weixin_42521058的博客 632

AArch64 ARM64 寄存器介绍

除了上述通用寄存器,还有FPSR(浮点状态寄存器)和 FPCR(浮点控制寄存器)等。X29寄存器和X30寄存器在函数调用和堆栈帧的管理中扮演着关键角色。AArch64架构提供了31个通用寄存器,每个寄存器都可以用作64位X寄存器(X0~X30)或32位W寄存器(W0~W30)。使用X寄存器将导致64位的计算,使用W寄存器将导致32位的计算。EL0、EL1、EL2和EL3是AArch64架构中定义的四个特权级别(Exception Levels),用于支持不同的执行环境和特权级别。

lml435035844的博客 1万+

Airtest快问快答,你们想问的这里都有!(第1期)

此文章来源于项目官方公众号:“AirtestProject” 版权声明:允许转载,但转载必须保留原链接;请勿用作商业或者非法用途 前言 本期我们给同学们整理了答疑Q群中,26个同学们最容易问到的问题,后续我们还会持续整理更多常见问题帮助大家避坑哒~ 1.如何输入文字? ① 使用airtest的 text() 接口: touch(输入框) text("文本") ② 使用poco的 set_text() 接口: poco("输入框").click() poco("输入框").set_text("文本") .

AirtestProject的博客 2496

毫米波雷达IWR1843开箱演示

毫米波雷达IWR1843开箱演示

m0_56120826的博客 7776

python 旅游_Python 带你来一次说走就走的环球旅行

阅读文本大概需要 10 分钟。1目 标 场 景十一长假,相信大部分的朋友这会应该是在全国各地浪或者是在浪的路上,朋友圈成为你们表演的场所。当然,也有一小戳朋友是选择家里蹲,你们是否感觉到无聊?是否想出去浪,参加朋友圈摄影比赛?本篇文章的目的是利用Python带我们实现一次说走就走的环球旅行,完胜这次的朋友圈摄影比赛。2准 备 工 作在开始编写脚本之前,需要做如下准备工作:1、一部 Root ...

weixin_39625975的博客 278

基于 DnLUT 超高效的彩色图像去噪(CVPR 2025),本地部署 DnLUT 模型,图像去噪算法训练和推理,全网最详细教程

基于 DnLUT 超高效的彩色图像去噪(CVPR 2025),本地部署 DnLUT 模型,图像去噪算法训练和推理,全网最详细教程

在职AI算法工程师,擅长计算机视觉,YOLO目标检测、分割等,擅长web、pyqt界面可视化,好内容持续更新中,来这里跟大家一起学习,共同进步 364

【RT-DETR涨点改进】全网独家创新,卷积细节涨点改进篇 | TCSVT 2025 | 引入DGBM差分专家引导双向调制模块,利用双向仿射调制实现特征分布对齐,含多种创新改进,助力小目标检测高效涨点

本文提出DGBM差分专家引导双向调制模块,用于改进RT-DETR目标检测网络。该模块通过差分建模突出不同层级特征的独特信息,利用双向调制实现特征分布对齐,增强局部细节与全局语义的协同表达。DGBM包含差分专家机制、物理反演建模和双向仿射调制三个关键部分,能有效解决CNN与Transformer特征融合冲突问题。实验表明,该方法可提升复杂场景下的检测精度,降低误检漏检率,且模块具有可插拔、易集成的特点。文章详细介绍了模块结构、原理、优势及具体实现代码,并提供了四种RT-DETR改进方案的yaml配置文件。

Ai缝合怪、助力小伙伴高效发论文 441

python 旅游_Python带你来一次说走就走的环球旅行

image1、目 标 场 景十一长假,相信大部分的朋友这会应该是在全国各地浪或者是在浪的路上,朋友圈成为你们表演的场所。当然,也有一小戳朋友是选择家里蹲,你们是否感觉到无聊?是否想出去浪,参加朋友圈摄影比赛?本篇文章的目的是利用 Python 带我们实现一次说走就走的环球旅行,完胜这次的朋友圈摄影比赛。2、准 备 工 作在开始编写脚本之前,需要做如下准备工作:1、一部 Root 后的 Andro...

weixin_39988930的博客 372

【本地部署实战】LM Studio深度使用指南:从环境搭建到模型调优

LM Studio通过极简的操作流程和强大的生态兼容性,让本地部署大模型成为可能。随着M4芯片的发布和CUDA 12.0的优化,未来本地化AI开发将迎来新的爆发点。建议开发者关注官方Discord社区(https://discord.gg/lmstudio)获取最新模型支持信息。

远程部署调试 运行安装 项目调试 二次开发 项目技术新 持续迭代 部分源码免费分享 8751

scanner一次输入多行_Python 带你来一次说走就走的环球旅行

阅读文本大概需要 10 分钟。1目 标 场 景十一长假,相信大部分的朋友这会应该是在全国各地浪或者是在浪的路上,朋友圈成为你们表演的场所。当然,也有一小戳朋友是选择家里蹲,你们是否感觉到无聊?是否想出去浪,参加朋友圈摄影比赛?本篇文章的目的是利用Python带我们实现一次说走就走的环球旅行,完胜这次的朋友圈摄影比赛。2准 备 工 作在开始编写脚本之前,需要做如下准备工作:1、一部 ...

weixin_39664477的博客 135

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

做一个python的旅游系统_Python 带你来一次说走就走的环球旅行

点击上方“AirPython”,选择“置顶公众号”第一时间获取 Python 技术干货! 阅读文本大概需要 10 分钟。1目 标 场 景十一长假,相信大部分的朋友这会应该是在全国各地浪或者是在浪的路上,朋友圈成为你们表演的场所。当然,也有一小戳朋友是选择家里蹲,你们是否感觉到无聊?是否想出去浪,参加朋友圈摄影比赛?本篇文章的目的是利用Python带我们实现一次说走就走的环球旅行,完胜这次的朋友圈摄...

weixin_39953356的博客 761

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

国庆,用Python 带你在家来一次环球旅行打卡!

点击上方“码农突围”,马上关注,每天早上8:50准时推送真爱,请置顶或星标阅读文本大概需要 10 分钟。1目 标 场 景十一长假,相信大部分的朋友这会应该是在全国各地浪或...

欢迎关注公众号:【码农突围】,公号后台回复9999,可以获取一份500页的LeetCode刷题笔记。 761

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

Python带你在朋友圈环球旅行

前言 本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理。 PS:如有需要Python学习资料的小伙伴可以加点击下方链接自行获取 python免费学习资料以及群交流解答点击即可加入 1.目 标 场 景 出门旅行谁不爱呢?可是,现实中总有各种各样的原因让我们无法随时随地去往远方。比如没时间,比如长假景点人太多,比如穷 ……尤其像现在这种特殊时期,“家里蹲”或许是更安全也更负责任的选择。 可是,偶尔看到朋友圈里别人在浪的照片,难免又心..

【优快云官方推荐】 374

用 Python 在朋友圈中游遍全球

阅读文本大概需要 10 分钟。1目 标 场 景十一长假,相信大部分的朋友这会应该是在全国各地浪或者是在浪的路上,朋友圈成为你们表演的场所。当然,也有一小戳朋友是选择家里蹲...

小詹学python的博客 211

Python, Java,C ++开发青年人环球旅行攻略与点评APP (开悟版)

**Java**:适合构建大型、高性能的后端服务,具有良好的扩展性。### **1. Python实现(适合快速开发原型或后端服务)**### **2. Java实现(适合构建大型、高性能的后端服务)**- **Python**:适合快速开发原型或小型项目,开发周期短。- **C++**:适合高性能计算或嵌入式场景,但开发复杂度较高。### **3. C++实现(适合高性能计算或嵌入式场景)**#### **示例代码(Spring Boot后端)**#### **示例代码(使用Crow框架)**

2501_90802096的博客 967

Python,C++开开发环球旅行之韩国APP

3. **餐饮数据**:爬取MangoPlate/Zomato韩国数据(合规前提下)2. **社交功能**:Python+Django Channels实现实时聊天。1. **地图服务**:接入KakaoMap API(需申请开发者账号)2. **Python异步IO**:使用aiohttp处理高并发请求。- **Python集成**:通过Pybind11暴露C++接口。2. **本土支付**:集成KakaoPay/Toss API。3. **VR预体验**:集成C++ OpenGL渲染引擎。

2501_90802096的博客 433

我的环球旅行梦

我的环球旅行梦 制作一个和旅行相关的Python项目,希望在未来可以一边完善自己的作品一边四处游玩。 1. 项目功能简介 (1)能获取到携程用户的关于自己旅游过的景点评论数据; (2)对每一个用户的评论数据都做了分析,然后创建对应的mysql数据库表; (3)使用Python里面的jieba库对评论数据进行分析; (4)分析得到的热词,制作成词云的方式展示出来。 隐藏的亮点 a,得到的用户评论...

qq_40660985的博客 553

用python完胜摄影比赛。这波操作牛逼

1、目 标 场 景 十一长假,相信大部分的朋友这会应该是在全国各地浪或者是在浪的路上,朋友圈成为你们表演的场所。 当然,也有一小戳朋友是选择家里蹲,你们是否感觉到无聊?是否想出去浪,参加朋友圈摄影比赛? 本篇文章的目的是利用 Python 带我们实现一次说走就走的环球旅行,完胜这次的朋友圈摄影比赛。 2、准 备 工 作 在开始编写脚本之前,需要做如下准备工作:...

QQ2352108083的博客 330

extjs中panel刷新_用 Python 在朋友圈中游遍全球

阅读文本大概需要 10 分钟。1目 标 场 景十一长假,相信大部分的朋友这会应该是在全国各地浪或者是在浪的路上,朋友圈成为你们表演的场所。当然,也有一小戳朋友是选择家里蹲,你们是否感觉到无聊?是否想出去浪,参加朋友圈摄影比赛?本篇文章的目的是利用Python带我们实现一次说走就走的环球旅行,完胜这次的朋友圈摄影比赛。2准 备 工 作在开始编写脚本之前,需要做如下准备工作:1、一部 ...

weixin_35056594的博客 184
上一篇: 被杭州温柔过的人,已经不想留在北京
下一篇: 转行Python最好看一下这篇文章
菜鸟学Python
博客等级 码龄9年 8063粉丝 571原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值