【这是Python知识圈的第90篇原创】
阅读文本大概需要 5 分钟。
前言
最近在琢磨自动化运营微博的事情,我之前很少刷微博,偶尔看看热点,微博里也没怎么发内容。我想着怎么利好技术每天让微博自己动起来呢。
我目前的做法还比较简单粗暴,直接点击 APP 中当天的热点新闻,复制文本,截图,转发,搞定。
转发时直接粘贴复制的文本有时会出现字数超过 140 字,这时需要对页面超出的字数做判断后做删减处理。
截图的作用是什么?在热点新闻页面截图,我们可以发微博时附上这张截图,也可以在其他平台发这条热点。
环境
除了 Python 语言环境外,因为我们操作的是 APP,所以需要 Appium 工具。
还需要一台自己的手机,我用的是 Android 手机,操作 Android 手机少不了 adb 命令。
关于自动化环境这块,你可以在我公众号的精选文章的自动化板块里找到相关的文章,更详细的资料可以去我自己搭建的个人技术博客上看,博客网址:https://www.pyzhishiquan.com。
本文的重点不在环境这块,因为这块还不是很成熟,所以抛出一个思路,大家如有更多的思路和方法,欢迎大家留言一起搞事情。
本文先分享上面提到的一个技术点:截图,以后再慢慢搞其他事情。
截图通常有两种形式,一种是把截图保存在自己的电脑中。另一种就是把截图保存在手机内存里面。
保存截图在电脑本地
把截图保存在电脑中的需求比较常见,实现也比较简单,直接调用的 get_screenshot_as_file 方法直接可以保存在 PC 本地。
括号里给的是图片保存的路径和图片的命名。
保存截图在手机内存
怎么把图片截取到手机里,因为我们全程操作的是 APP,所以把截图放在手机里是最方便的。那如何把截图保存在手机内存里呢?
adb 推送到手机
第一种方法是先用上面的 get_screenshot_as_file 方法保存到本地,然后用 adb 命令 push 到手机内存里。
push 命令的格式如下:
前面的路径是电脑中的路径,后面的路径是你需要推送到手机内存中的路径,我写的是手机中所有截图的路径目录。
这是 adb 命令,我们在 Python 中怎么调用呢?
引号里写入上面的 adb 命令即可。
直接用 adb 中的截图方法
adb 命令还是比较方便的,我们可以直接用 adb 命令中的截图方法,格式如下。
-p 后写的是保存在手机的路径。
这两种方法有什么区别?
第 2 种用 adb 命令直接截图放在手机里的,我们可以直接在相册中找到,而且是显示在最新的位置,这样就很方便了,发送动态的时候直接选择相册里的第一张图片就可以了。所以全程操作 APP 的用这种方法比较方便。
其他截图方法探索
其实我还在探索另外一种方法。就是用安卓手机的模拟按键方法。
比如上面中的 4 表示手机中的返回按键,安卓中截图用的是 音量- 键加电源键,音量-键对应的 keyevent 是 25,电源键对应的 keyevent 是 26,把这两个放一起能到达效果吗?
这样不行,25 和 26 调换顺序也不行,keyevent 源码中看了下,也没写支持这种同时按键的,所以这种方法放弃。
keyevent 源码
本文暂时只是给出一个思路,其他的等捯饬成熟后再分享更多内容给大家,大家有好的思路的可以在下方留言,一起探讨搞事情。
领取专属 10元无门槛券
私享最新 技术干货