配置要求:
基本环境搭建
小程序X5内核浏览器
环境配置
1.使用微信浏览器进入debugx5.qq.com,勾选调试功能,如果进入页面不是这个X5调试的话,先跳过
2.如果进入的不是x5内核,先进入debugmm.qq.com/?forcex5=true
获取小程序的进程和名字
1.我们先使用微信进入一个小程序,比如我这边进入BOSS直聘(进入之前尽量把所有的程序都杀死,方便我们找到小程序)
adb shell dumpsys activity top | findstr ACTIVITY #获取正在运行的程序
adb shell ps pid # pid 从获取运行中的程序找到id
代码模块
desired_caps = {
"platformName": "Android",
# 键盘设置
'unicodeKeyboard': True, # 屏蔽软键盘
# 'resetKeyboard': True,
"platformVersion": "10",
"deviceName": "bb03a20",
"noReset": True,
"appPackage": "com.tencent.mm",
"appActivity": "com.tencent.mm.ui.LauncherUI",
"recreateChromeDriverSession": True,
# adb shell dumpsys activity top | findstr ACTIVITY 取出小程序进程id
# adb shell ps pid 通过id获取进程名字
"chromeOptions": {"androidProcess": "com.tencent.mm:appbrand0"}, # 小程序的进程名称
"browserName": "", # 科教书说必须要有我实践没有也行,官网解释:要自动化的移动网络浏览器的名称。如果要自动执行应用,则应为空字符串。大意:如果执行手机浏览器的话,就放上浏览器名字,如果是内嵌H5的话,就空字符串;
"automationName": "UiAutomator2"
}
driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub',desired_caps)
# 进入小程序步骤省略。。。
# 获取上下文
cons = driver.contexts
print(cons) #打印上下文
# 切换上下文到最后一个,PS:打开小程序后可能会出现很多个上下文,随便进一个都可以
driver.switch_to.context(cons[-1])
# 获取窗口句柄
hans = driver.window_handles
# 默认的句柄不是我们的小程序,我们需要切换窗口句柄
driver.switch_to.window(hans[-1])
# 切换成功后,就打印一下页面看看是不是我们的小程序,不是的话要么上下文切错了就是句柄切错了
print(driver.page_source)