导读:本文主要讨论利用安卓模拟器实现网页二维码扫描登录,主要基于以下技术来实现自动化登录。
AirtestProject(APP 内元素定位)adb(桥梁) 安卓模拟器(运行 APP)playwright-python(网页自动化)adbAndroid Debug Bridge (adb) 是一种功能多样的命令行工具,可与设备进行通信。adb 命令可用于执行各种设备操作,例如安装和调试应用。当启动某个 adb client 时,该客户端会先检查是否有 adb server 进程已在运行。如果没有,它会启动服务器进程。服务器在启动后会与本地 TCP 端口 5037 绑定,并监听 adb client 发出的命令。adb server 会与所有正在运行的设备建立连接。后续就可以通过 adb 命令来访问和操作这些设备。
// adb 下载https://developer.android.com/tools/releases/platform-tools?spm=5176.28103460.0.0.297c5d275YV4Te&hl=zh-cn// 环境变量配置(win10)打开“控制面板”或“设置” -> “系统” -> “关于” -> “高级系统设置” -> PATH 加入D:\Program Files\platform-tools-latest-windows\platform-tools// 验证adb version安卓模拟器安卓模拟器有很多,如 Bluestacks(蓝叠)、LDPlayer(雷电模拟器)等。这里笔者使用的是蓝叠模拟器(部分 APP 会检测识别特定的模拟器),它支持自定义控制配置,多开,脚本编写等功能。安装好模拟器后需要开启支持 adb 调试。
开启支持 adb 调试
// 查看设备连接情况adb devices -l// 打印如下List of devices attachedemulator-5554 device // 每个模拟器占用两个端口,奇数给控制台连接,偶数给 adb 连接, 状态 device 表示已经连上//如果配置正确但是 adb 识别不到,则可通过重启 adb 解决adb kill-server在模拟器上预先下载好 APP,并登陆好账号。模拟器如果运行比较卡,可做适当调整。
模拟器性能调优
AirtestProject是一个跨平台的UI自动化框架,此处笔者用于定位安卓APP上的元素。它提供了一个 IDE ,其支持自动化脚本录制,可以录制我们的操作并生成相应的代码和文件,十分方便。后续可将这些生成的代码嵌入到我们自己的 python 程序中。关于详细的操作可自行查阅官方文档。
它主要由以下三部分组成:
Airtest 基于图像识别的自动化测试框架Poco 基于 UI 控件识别的自动化测试框架AirtestIDE 编辑器将生成代码嵌入到我们的 python 代码中时需要安装相应的库(注意 python 版本 <= 3.9)
// 安装Airtest框架pip install airtest// 安装Poco框架;编写了Poco语句就需要安装pip install pocoui实践:结合 playwright-python 实现打开网页自动扫码登陆的思路playwright-python 是一个 Python 库用于浏览器自动化操作,首先我们可以基于它实现打开浏览器,跳转到指定网站,并模拟点击直到扫码登陆界面。接下来对二维码进行截图,并通过 adb 命令推送到模拟器上(注意,push 后模拟器相册不会立马更新,需要 broadcast 广播一下)。接下来通过 adb 连接模拟器并实现 APP 扫码操作(打开扫码界面 - 从相册中选择照片),这些 APP 定位和操作元素代码均可借助 AirtestProject 协助生成。
部分参考代码如下:
# 截图filename = generate_uuid_string(13) + ".png"source_path = "D:/PythonProject/Temp/images/" + filenametarget_path = "/sdcard/DCIM/Camera/" + filenamebroadcast_path = "file:///sdcard/DCIM/Camera/" + filenameawait page.screenshot(path=source_path)await asyncio.sleep(3)# 推送到模拟器上adn_command = "adb -s emulator-5554 push " + source_path + " " + target_pathsubprocess.run(adn_command, capture_output=True, text=True, shell=True)# push后相册没有立马更新,需要广播一下adn_command = "adb -s emulator-5554 shell am broadcast -a android.intent.action.MEDIA_SCANNER_SCAN_FILE -d " + broadcast_pathsubprocess.run(adn_command, capture_output=True, text=True, shell=True)# 连接设备auto_setup(__file__, devices=["android://127.0.0.1:5037/127.0.0.1:5555"])poco = AndroidUiautomationPoco(use_airtest_input=True, screenshot_each_action=False)# 进入到扫码界面touch(Template(r"../images/tpl1726731649836.png", record_pos=(-0.458, -0.811), resolution=(900, 1600)))await asyncio.sleep(2)touch(Template(r"../images/tpl1726732113466.png", record_pos=(-0.031, -0.803), resolution=(900, 1600)))await asyncio.sleep(2)touch(Template(r"../images/tpl1726732129931.png", record_pos=(0.279, 0.72), resolution=(900, 1600)))# 选取第一张二维码进行扫码await asyncio.sleep(2)poco("com.ss.android.ugc.aweme:id/ni6").click()# 同意await asyncio.sleep(2)touch(Template(r"../images/tpl1727151787833.png", record_pos=(-0.014, 0.701), resolution=(900, 1600))) 相关文档蓝叠:https://www.bluestacks.cn/keymaping.html
AirtestProject :https://airtest.doc.io.netease.com/tutorial/1_quick_start_guide/
如何脱离AirtestIDE跑自动化脚本:https://airtest.doc.io.netease.com/IDEdocs/faq/0_no_airtestide/
ADB:https://developer.android.com/tools/adb?spm=5176.28103460.0.0.297c5d275YV4Te&hl=zh-cn#options
playwright-python:https://github.com/microsoft/playwright-python
本文来自作者[admin]投稿,不代表吹吹讯立场,如若转载,请注明出处:https://cc199.top/bm/202504_15309.html
评论列表(4条)
我是吹吹讯的签约作者“admin”!
希望本篇文章《网站在线扫描(自动化登录利用安卓模拟器实现网页二维码扫描登录)》能对你有所帮助!
本站[吹吹讯]内容主要涵盖:国足,欧洲杯,世界杯,篮球,欧冠,亚冠,英超,足球,综合体育
本文概览:导读:本文主要讨论利用安卓模拟器实现网页二维码扫描登录,主要基于以下技术来实现自动化登录。 AirtestProject(APP 内元素定位)adb(桥梁) 安卓模拟器(运行...