Appium定位混合應(yīng)用WebView

前言

混合應(yīng)用是一種常見的app類型,主要是將web頁面嵌套到app中

測試準(zhǔn)備


操作步驟

  1. 手機(jī)(模擬器)與電腦連接,開啟USB調(diào)試模式,通過adb devices可查看到此設(shè)備。
adb connect 127.0.0.1:7555
  1. 電腦端、移動端安裝chrome瀏覽器。(盡量保證移動端chrome版本與PC端一致)根據(jù)對應(yīng)的Chrome瀏覽器版本安裝對應(yīng)的Chrome driver。

  2. 將下載的chromediver放到appium路徑中

  • 如果是用appium server啟動的服務(wù)放到如下路徑
C:\Users\xxx\AppData\Roaming\npm\node_modules\appium\node_modules\appium-chromedriver\chromedriver\win
  • 如果是用appium-desktop啟動的服務(wù)放到如下路徑
C:\Users\xxx\AppData\Local\Programs\Appium\resources\app\node_modules\appium\node_modules\appium-chromedriver\chromedriver\win
  1. 打開dr.fone app 進(jìn)入web頁面。(如圖所示)


    image.png
  2. pc端打開Chrome瀏覽器輸入:chrome://inspect/#devices 如圖所示

    devices

如果在 chrome://inspect/#devices 地址中,沒有顯示對應(yīng)的webview,有可能未開啟調(diào)試模式。

開啟方式
  • 在app中配置如下代碼(在WebView類中調(diào)用靜態(tài)方法setWebContentsDebuggingEnabled):
if (Build.VERSION.SDK_INT >=Build.VERSION_CODES.KITKAT) {  
 WebView.setWebContentsDebuggingEnabled(true);

注:此步驟,一般需要App開發(fā)人員開啟。

  • 有些手機(jī)需要root權(quán)限
  • android 4.4+
  1. 執(zhí)行腳本
from time import sleep

from appium import webdriver
from selenium.webdriver.support.ui import WebDriverWait


caps = {}
caps["platformName"] = "android"
caps["deviceName"] = "mumu"
caps["appPackage"] = "com.wondershare.drfone"
caps["appActivity"] = "com.wondershare.drfone.ui.activity.WelcomeActivity"
caps["autoGrantPermissions"] = True

driver = webdriver.Remote("http://localhost:4723/wd/hub", caps)
driver.implicitly_wait(15)


# 點(diǎn)擊BackupBtn
driver.find_element_by_id('com.wondershare.drfone:id/btnBackup').click()

WebDriverWait(driver,8).until(lambda x:x.find_element_by_id('com.wondershare.drfone:id/btnRecoverData'))
# 點(diǎn)擊NextBtn
driver.find_element_by_id('com.wondershare.drfone:id/btnRecoverData').click()

#等待webview頁面顯示
WebDriverWait(driver,20).until(lambda x:x.find_element_by_class_name('android.webkit.WebView'))

# 獲取所有上下文
contexts=driver.contexts
print(contexts)

sleep(10)
# 切換上下文,進(jìn)入webview頁面
driver.switch_to.context('WEBVIEW_com.wondershare.drfone')
# 輸入郵箱地址
driver.find_element_by_id('email').send_keys('shuqing@wondershare.cn')
# 點(diǎn)擊sendBtn
driver.find_element_by_class_name('btn_send').click()

#切換上下文 (回到app原生頁面)
driver.switch_to.context('NATIVE_APP')
# 點(diǎn)擊返回
driver.find_element_by_class_name('android.widget.ImageButton').click()

補(bǔ)充 WebView 如何查找元素

  1. 使用原來(uiautomator)查找原生app的方式來查找元素
  2. 把webview的鏈接提取出來,通過pc的chrome打開鏈接,然后打開開發(fā)者工具找到元素使用selenium的方式定位
  3. 通過chrome://inspect/#devices方式查找元素(注意此方法需要梯子,否則無法打開)
    devices

    inspect
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容