1.开启微信debug模式
在微信浏览器中打开:debugx5.qq.com,在信息页面勾选‘打开TBS内核Inspector调试功能’
在电脑chrome浏览器输入:chrome://inspect/#devices ,查看微信webview版本号
2. 代码配置
# 微信公众号 vivo
desired_caps_vivo_weixin= {
'platformName': 'Android',
'platformVersion': '8.1',
'deviceName': 'PD1635',
'noReset': 'True',
'appPackage': 'com.tencent.mm',
'appActivity': '.ui.LauncherUI',
'automationName': "Uiautomator2",
'newCommandTimeout': 240,
'chromeOptions': {
'androidProcess': 'com.tencent.mm:tools'
},
'unicodeKeyboard': True,
'resetKeyboard': True
}
3.操作公众号(代码实现)
首先要关注微信公众号‘心医国际(西安)’,执行以下代码
driver = webdriver.Remote(command_executor = 'http://127.0.0.1:4723/wd/hub',desired_capabilities = desired_caps_vivo_weixin)
#输入搜索内容
driver.find_element_by_id('com.tencent.mm:id/kh').send_keys('心医国际西安')
time.sleep(5)
#点击搜索结果
driver.find_element_by_id('com.tencent.mm:id/q0').click()
time.sleep(5)
#点击菜单-延安APP
driver.find_element_by_xpath('//android.widget.TextView[@text="APP项目"]').click()
time.sleep(2)
driver.find_element_by_xpath('//android.widget.TextView[@text="延安APP"]').click()
time.sleep(5)
cts = driver.contexts
print(cts) # 打印结果:['NATIVE_APP', 'WEBVIEW_com.tencent.mm:tools'],默认到webview下
#切换到webview
driver.switch_to.context('WEBVIEW_com.tencent.mm:tools')
print('切换成功')
#打印webview页面html
print(driver.page_source)
4.问题处理
执行代码driver.switch_to.context('WEBVIEW_com.tencent.mm:tools')报错,可以看到是因为chrome和chromedriver版本不对应导致,chrome版本由chrome://inspect/#devices 查到为66.0.3359.126,Chromedriver版本为2.46。
查看chromedriver和chrome的对比表:https://blog.csdn.net/huilan_same/article/details/51896672
Chromedriver下载地址:http://chromedriver.storage.googleapis.com/index.html
将对应的Chromedriver下载后放在指定文件夹下:
启动配置中增加:'chromedriverExecutableDir':'D://tools//chromedriver//2.38'
执行代码启动微信公众号,之后的webview页面元素获取使用selenium框架。
selenium元素定位参考文件: