7.app中存在網頁簡稱混合Hybrid運用
阿新 • • 發佈:2020-08-01
瞭解webview
混合(Hybrid)應用
- 一部分是原生介面和程式碼,而另一部分是內嵌網頁 - 比如微信、支付寶 - 內嵌了一個瀏覽器核心,由瀏覽器核心實現的 - 可以借用元素定位工具區分是原生還是混合應用,原生應用滑鼠選不中,混合應用可以,原生應用斷網也可以開啟 - 混合中的內嵌的展示網頁內容的模組稱為webview - 負責解析app內嵌網頁的部分是系統內建的webview - 安卓webview本質是chrome瀏覽器核心,因此 版本和chrome一致選擇驅動時,參考同版本chr omdriver,如果不知道手機webdriver的版本號 ,程式可以先不用chromdriver,報錯資訊會知 道選擇那個版本的chromedriver
原生應用與混合應用的區別
混合應用原生和網頁屬於不同的context,需要切換上下文物件
檢視當前所有contexts
driver.contexts
#['NATIVE_APP', 'WEBVIEW_com.example.haiwen.myhybirdapp', 'WEBVIEW_com.tencent.mobileqq:mini']
NATIVE_APP屬於原生,WEBVIEW_*屬於網頁
檢視當前所在context
print(driver.current_context) #NATIVE_APP
切換到網頁context,轉換好了就可以使用網頁的定位方式啦
driver.switch_to.context(網頁context名) #切入到webview操作-才能以網頁形式定位元素 driver.switch_to.context('WEBVIEW_com.example.haiwen.myhybirdapp')
如下例子是檢視豆瓣電影的評分
from appium import webdriver #app混合應用 # 準備自動化配置資訊 desired_caps = { # 移動裝置平臺 'platformName': 'Android', # 平臺OS版本號,寫整數位即可 'plathformVersion': '6', # 裝置的名稱--值可以隨便寫 'deviceName': 'test0106', # 提供被測app的資訊-包名,入口資訊: # 1.開啟被測app,2.命令列輸入以下資訊 # adb shell dumpsys activity recents | findstr intent={ 'appPackage': 'com.example.haiwen.myhybirdapp', 'appActivity': '.MainActivity', # 確保自動化之後不重置app 'noReset': True, # 設定session的超時時間,單位秒,預設60s 'newCommandTimeout': 6000, # 設定底層測試驅動-1.15預設使用的底層驅動就是UiAutomator2 'automationName': 'UiAutomator1', # 或者UiAutomator1 'skipServerInstallation':True,#跳過UI2的安裝,如果第一次執行程式,不要新增該配置 #指定匹配手機瀏覽器的webdriver版本--指定驅動所在目錄 #需要系統內建的webview為安卓原生--即谷歌瀏覽器核心 'chromedriverExecutableDir': 'D:\\20\\autotest\\appiumcase\\chromedriver_win32_81', } boss_caps = desired_caps #當驅動為ui1,輸入中文需要指定輸入法 boss_caps['unicodeKeyboard']=True#修改手機的輸入法,UI2不需要設定 boss_caps['resetKeyboard']=True driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub',desired_caps) driver.implicitly_wait(10) #輸入網址 driver.find_element_by_id("editText").send_keys('https://m.douban.com/home_guide') #點選按鈕 driver.find_element_by_id("button").click() #檢視當前app的所有context print(driver.contexts) #['NATIVE_APP', 'WEBVIEW_com.example.haiwen.myhybirdapp', 'WEBVIEW_com.tencent.mobileqq:mini'] #NATIVE_APP安卓原生 #WEBVIEW_com.example.haiwen.myhybirdapp web網頁 #檢視當前的context print(driver.current_context) #NATIVE_APP #切入到webview操作-才能以網頁形式定位元素 driver.switch_to.context('WEBVIEW_com.example.haiwen.myhybirdapp') #豆瓣手機端網頁搜尋框 driver.find_element_by_class_name('search-input').send_keys('肖申克的救贖\n') #評分 rate = driver.find_element_by_css_selector('.search-results>li:nth-child(1)>ul>li:nth-child(1) p.rating>span:nth-child(2)').text print('肖申克的救贖的評分為:%s'%rate) driver.quit()