當我們的測試設備或者模擬器支持高版本的api時骑冗,我們可以使用uiautomater view來去操作content-desc (ass..._id)元素來去操作,此方式不用開啟app的 webview 調試巧涧。
當想操作更多webview時,此時就要讓開發(fā)開啟webview的調試模式
print(self.driver.contexts)可看到我們app的是native + hybrid組成的谤绳。
第一步:driver.switch_to.context(self.driver.contexts[1]) # 把作用域切換到hybrid
第二步:使用chorme查看app的webview瀏覽器版本 下載對應的chormedriver
第三步 caps["chromedriverExecutableDir"]="/Users/seveniruby/projects/chromedriver/2.20/" 配置chormedriver的路徑
第四步:使用特定的chorme去渲染手機上的webview 缩筛,此時會用到selenium的定位方法去定位元素 例如:driver.find_element_by_id("phone-number").send_keys("15600534760")
第五步:最后別忘記切換回native的作用域
參考代碼:
driver.find_element_by_id('go_to_webview').click()
print(driver.contexts) # 打印所有的環(huán)境
time.sleep(1)
driver.switch_to.context(driver.contexts[1]) # 切換到webview
driver.find_element_by_xpath('//*[@id="sb_form_q"]').send_keys("12321321321")
time.sleep(1)
driver.find_element_by_xpath('//*[@id="sbBtn"]').click()
time.sleep(1)
driver.press_keycode(4) # 返回
time.sleep(1)
driver.switch_to.context(driver.contexts[0]) # 切換會native
time.sleep(1)
print(driver.current_context) # 獲取當前的環(huán)境统诺,看是否切換成功
driver.find_element_by_id('go_to_webview').click()
查看app內部webview瀏覽器版本號:[chrome://inspect/#devices]
根據(jù)app內的瀏覽器版本下載對應的 chorme driver驅動:
如何查看webview版本:
adb shell pm list package # 查看手機所有包的名字
adb shell pm list package | findstr webview # 從中篩選webview的包名
adb shell pm dump com.google.android.webview | findstr version
versionCode=394511638 minSdk=29 targetSdk=29
versionName=79.0.3945.116
com.google.android.trichromelibrary version:394511638
signatures=PackageSignatures{7053b5f version:3, signatures:[f4ae824f], past signatures:[]}
下載地址:https://chromedriver.storage.googleapis.com/index.html
下載完成后appium desktop的driver path 路徑下 即可