测试环境:win10 64位,python3.10.4;真机,荣耀10青春版,Android版本10。
之前是在手机模拟器上操作的,参考我的文章python使用uiautomator2操作雷电模拟器_小小爬虾的博客-CSDN博客
一、将手机设置为开发者模式
1、设置-关于手机-在“版本号”上连续点击即可进入开发者模式
2、设置-系统和更新-开发人员选项-打开“USB调试”和打开“仅充电模式下允许ADB调试”
二、将手机用USB线连接电脑,手机上弹出对话框,选择信任此电脑
三、使用adb连接手机
我尝试使用雷电模拟器自带的adb来连接,其路径cd D:\leidian\LDPlayer4,进入路径后,直接adb devices即显示出了连接手机的情况(没想到会这么顺利),记录下串号Q7PRX19227005773,后面会用到。
四、 运行python3 -m uiautomator2 init安装包含httprpc服务的apk到手机
进入路径cd C:\Users\LC\AppData\Local\Programs\Python\Python310\, 输入python3 -m uiautomator2 init,注意手机上要同意继续安装(会有两次提醒)
在这台win10电脑操作时,仍然出现模拟器上的错误:
这次就不慌了。这是因为adb占用了5037端口。在任务管理器中结束adb进程。手机上卸载小汽车。重新python3 -m uiautomator2 init后就安装成功了,如下图。
五、运行测试代码
import uiautomator2 as u2
d = u2.connect() # connect to device
print(d.info)
六、win+r打开运行,运行weditor
输入手机设备号,点击Connect,然后拨弄几次静态和实时,真机上的画面就呈现在页面上了。
在打开某个APP的情况下,再次运行测试代码,就能显示出目前APP的包名:
至此,就可以开始编写更详细的代码来控制操作手机了。
备注:之后再真机连接电脑,有可能需要先在手机上点击“小汽车”图标,然后点击“启动UIAUTOMATOR”,才能正常开展工作。
接下来写一段签到并领取某鱼币的小代码,实测可用:
import uiautomator2 as u2
d = u2.connect() # connect to device
print(d.info)
d.app_start('com.taobao.idlefish')
d.implicitly_wait(5)
#点击签到
d(resourceId="com.taobao.idlefish:id/right_title_view_lottie").click()
#点击领取
elem=d.xpath('//*[@content-desc="点击领取"]')
elem.click()
# elem=d.xpath('//*[@content-desc="100币"]/android.view.View[1]')
# elem.click()
elem_ok=d.xpath('//*[@content-desc="知道了"]')
elem_ok.click()