1.识别手机
2.开启调试:
针对微信版本在7.0+,微信有对H5开关做了调整,需要在聊天窗口输入如下:
http://debugmm.qq.com/?forcex5=true http://debugx5.qq.com
3.获取小程序所在的进程(微信有多个进程,需要知道小程序运行时是在哪个进程当中)
打开微信进入小程序后,在cmd当中运行:
获取进程号命令:adb shell dumpsys activity top | findstr ACTIVITY
获取进程名称:adb shell ps 进程号
4、appium代码 - 启动参数当中:
#支持X5内核应用自动化配置 - 不使用安卓默认自带的webview
desired_caps[“recreateChromeDriverSessions”] = True
# 切换到webview时,小程序在哪个进程
desired_caps[“chromeOptions”] = {“androidProcess”:“com.tencent.mm:appbrand0”}
5、进入小程序之后,获取当前所有的上下文,切换与4当中的进程名称一致的webview:com.tencent.mm:appbrand0
注意:
chromedriver版本要与腾讯x5版本匹配,而不是原生的webview
6、获取小程序当中所有的窗口。
遍历所有窗口,并切入窗口的html中,查找有代表性的元素。
print(“=进入web自动化环节===============”)
#打印当前所有的窗口
hs = driver.window_handles
print(“当前所有的窗口为:”,hs)

# #print(“当前所在的窗口为:”,driver.current_window_handle)

# #需要找到哪一个窗口有柠檬班信息的窗口,然后再在其下找元素操作。

# #遍历所有的handles,找到当前页面所在的handle:如果pageSource有包含你想要的元素,就是所要找的handle

# #小程序的页面来回切换也需要:遍历所有的handles,切换到元素所在的handle

for handle in hs:
 driver.switch_to.window(handle)
 print(“切换到窗口:”,handle)
 time.sleep(3)
 #print(driver.page_source)
 if driver.page_source.find(“”) != -1:
 break

**# 启动appium时,需要指定chromedriver.exe的目录。使用appium默认目录下的会报错。
在切换到小程序webview时,会去匹配chrome内核的39的驱动。在切换完成之后,在打印所有的窗口时,会使用x5内核的版本。 # 所以指定一个非默认目录下面的chromedriver.exe(X5内核对应的版本),此问题就不会出现

在appium server上设置chromedriver的路径:D:\ChromeDrivers\chromedriver.exe**

desired_caps = {}
 支持X5内核应用自动化配置
 desired_caps[“recreateChromeDriverSessions”] = True
 android 4.4以下的版本通过Selendroid来切换到webview
 desired_caps[“automationName”] = “UiAutomator2”
 desired_caps[“platformName”] = “Android”
 desired_caps[“platformVersion”] = “9.0”
 desired_caps[“deviceName”] = “Android Emulator”
 desired_caps[“appPackage”] = “com.tencent.mm”
 desired_caps[“appActivity”] = “com.tencent.mm.ui.LauncherUI”
 desired_caps[“chromedriverExecutableDir”] = ‘D:\ChromeDrivers\chrome77’
 desired_caps[“noReset”] = True
 desired_caps[“unicodeKeyboard”] = True
 desired_caps[“resetKeyboard”] = TrueChromeOptions使用来定制启动选项,因为在appium中切换context识别webview的时候, # 把com.tencent.mm:toolsmp的webview识别成com.tencent.mm的webview. # 所以为了避免这个问题,加上androidProcess: com.tencent.mm:appbrand0或com.tencent.mm:toolsmp
 desired_caps[“chromeOptions”] = {“androidProcess”: “com.tencent.mm:appbrand0”}#小程序
 desired_caps[“chromeOptions”] = {“androidProcess”: “com.tencent.mm:toolsmp”}#公众号#desired_caps[“browserName”] = “”
 driver = webdriver.Remote(‘http://127.0.0.1:4723/wd/hub’, desired_caps)
 wait = WebDriverWait(driver,30)#切换到小程序webview
 driver.switch_to.context(‘WEBVIEW_com.tencent.mm:appbrand0’)#切换到公众号webview
 driver.switch_to.context(‘WEBVIEW_com.tencent.mm:toolsmp’)

WxJava 推送文章 测试公众号_WxJava 推送文章 测试公众号