#!/usr/bin/env/python3 # -*- coding:utf-8 -*- ''' Author:leo Date&Time:2019-08-09 and 22:11 FileName:20190809_咖啡小程序.py Description:... 小程序:成都購房助手 如何查看微信webview中的元素 1、手機打開【開發者模式】 2、app必須是debug模式。 3、手機通過USB連接電腦,且能夠識別出來手機。 4、可以科學上網。 如何配置微信desired_caps環境參數 1、打開微信,在任意對話框中輸入debugx5.qq.com。 2、點擊發送成功的debugx5.qq.com,稍等片刻點擊進入設置頁面 3、切換到【seeting】,勾選【是否打開tbs內核】,保存退出 4、退出設置,重啓微信端 5、開啓谷歌瀏覽器的科學上網模式 6、打開chrome,地址欄輸入chrome://inspect/#devices,可以看到設備介紹 7、接下來就可以輕鬆識別元素了,和用f12查看元素沒有區別,請開始你的表演 代碼實戰(由於我沒有安卓手機,只能用模擬器,模擬器沒有網絡,遂只能做到基礎應用): 上面這些搞定了,在Appium裏寫代碼就簡單了,先說下關鍵的幾個點: 1、#必須加上此句desired_caps['chromeOptions']={'androidProcess': 'com.tencent.mm:tools'} #微信的package name=com.tencent.mm,activity=com.tencent.mm.ui.LauncherUI。 2、#可以通過下面的語句輸出webview的名稱 contexts=driver.contexts print('contexts=',contexts) 3、#使用下面的語句切換到指定的webview裏 driver.switch_to.context('WEBVIEW_com.tencent.mm:tools') 4、切換到webview裏面,剩下的定位方式和web一模一樣,就是上面講的元素識別方法 5、#如果想返回原生態的view,可以用下面的語句 ''' from appium import webdriver from time import sleep desired_caps = { 'platformName': 'Android', 'platformVersion': '5', 'deviceName': '127.0.0.1:62001', # 'app': r'D:\TestFiles\Appium\Apk\sqauto.apk', 'appPackage': 'com.tencent.mm', 'appActivity': 'com.tencent.mm.ui.LauncherUI', 'unicodeKeyboard': True, 'resetKeyboard':True, 'noReset': True, # 初始化,True爲了避免每次打開APP都提問你是否獲取權限 'newCommandTimeout': 6000, 'automationName':'uiautomator2' } driver = webdriver.Remote("http://127.0.0.1:4723/wd/hub",desired_caps) driver.implicitly_wait(20) sleep(10) text1 = driver.contexts currentText = driver.current_context print(f"全部上下文:{text1},當前上下文:{currentText}") # 微信頂部標題欄 title = driver.find_element_by_id("com.tencent.mm:id/qh") print(f"當前標題欄:{title.text}") sleep(15) # 點擊搜索按鈕 driver.find_element_by_id("com.tencent.mm:id/qi").click() sleep(10) # 輸入星巴克搜索 driver.find_element_by_id("com.tencent.mm:id/li").send_keys("星巴克\n") sleep(3) driver.find_element_by_id("com.tencent.mm:id/c2h").click() sleep(10) # 網絡異常打印title print(driver.find_element_by_accessibility_id("當前所在頁面,搜一搜").text) sleep(5) # 返回主頁 driver.find_element_by_accessibility_id("返回").click() sleep(5) driver.find_element_by_accessibility_id("返回").click() sleep(5) # 初始化座標 size = driver.get_window_size() print(size) startx = size["width"]*0.5 starty = size["height"]*0.2 endy = size["height"]*0.8 sleep(5) # 下拉顯示小程序 driver.swipe(startx, starty, startx, endy, 500) sleep(5) # 打印小程序名稱 name = driver.find_element_by_xpath("//android.widget.TextView[@text='成都購房顧問']") print("小程序名稱爲:%s" %(name.text)) # # 微信底部菜單欄 # wechat = driver.find_element_by_id("com.tencent.mm:id/b9g") # print(wechat.text) input("Press anykey to quit...") driver.quit()
--------------------------------------------------------------------------------------------------
全部上下文:['NATIVE_APP'],當前上下文:NATIVE_APP
當前標題欄:微信
當前尺寸:{'width': 1080, 'height': 1920}
小程序名稱:成都購房顧問
菜單:微信,通訊錄,發現,我
Process finished with exit code 0