appium---如何判斷原生頁面和H5頁面


  目前app中存在越來越多的H5頁面了,對於一些做app自動化的測試來說,要求也越來越高,自動化不僅僅要支持原生頁面,也要可以H5中進行操作自動化,這一篇介紹如何查看頁面上是否存在H5頁面,這里首先要了解一個知識點webview是什么

webview是什么

webview是屬於android中的一個控件,也相當於一個容器,需要把H5的一些前端內容,通過這個容器去調用,顯示和渲染網頁

目前很多app中都實現app原生頁面(native)和webview頁面(H5),我們如何查看頁面上哪些存在webview和native呢?

查看webview和native

1、打開uiautomatorviewer定位工具,進行查看頁面上是否存在webview。下圖可以看到android.webkit.webview。

 

2、斷網情況下,進行訪問app,如果可以正常顯示頁面,說明為原生頁面,如果不能訪問,則為webview(H5)頁面

3、通過fiddler進行抓包查看,內容存在html則為webview(H5)頁面

那么我們在appium中如何查看呢?

4、通過contexts方法

def contexts(self):
        """
        返回當前會話中的上下文。
        """
        return self.execute(Command.CONTEXTS)['value']

執行腳本:

# coding:utf-8
from appium import webdriver
import time
desired_caps = {
                        'platformName': 'Android',  # 測試版本
                        'deviceName': 'emulator-5554',   # 設備名
                        'platformVersion': '5.1.1', # 系統版本
                        'appPackage': 'com.yipiao', #apk的包名
                       'appActivity': '.activity.LaunchActivity', # apk的launcherActivity
                        "noReset": True,  # 不清空數據
                        }
driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub', desired_caps)
time.sleep(6)
driver.find_element_by_xpath('//*[@text="下次再說"]').click()
time.sleep(3)
driver.find_element_by_xpath('//*[@text="我的"]').click()
# 點擊產品意見
time.sleep(3)
driver.find_element_by_xpath('//*[@text="產品意見"]').click()
# 獲取全部上下文
cons = driver.contexts
print(cons)


# ['NATIVE_APP', 'WEBVIEW_com.yipiao']

上面返回的結果中可以看到頁面中存在NATIVE_APP,和webview_com.yipiao。其中native_app表示app原生頁面,然后webview_com.XXXX表示webview(H5)的頁面

切換webview

前面已經了解到如何查看頁面中是否存在webview,當我們想要操作webview上的元素時,必須要進入到webview中,那么如何進入webview呢?

可以通過 _switch_to.context() 方法進行切換

上面已經查詢到頁面上的內容,然后我們通過_switch_to.context()方法進行跳轉

# 跳轉webview
driver._switch_to.context("WEBVIEW_com.yipiao")
print(driver.context)

源碼:

# coding:utf-8
from appium import webdriver
import time
desired_caps = {
                        'platformName': 'Android',  # 測試版本
                        'deviceName': 'emulator-5554',   # 設備名
                        'platformVersion': '5.1.1', # 系統版本
                        'appPackage': 'com.yipiao', #apk的包名
                       'appActivity': '.activity.LaunchActivity', # apk的launcherActivity
                        "noReset": True,  # 不清空數據
                        }
driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub', desired_caps)
time.sleep(6)
driver.find_element_by_xpath('//*[@text="下次再說"]').click()
# 點擊我的
time.sleep(3)
driver.find_element_by_xpath('//*[@text="我的"]').click()
# 點擊產品意見
time.sleep(3)
driver.find_element_by_xpath('//*[@text="產品意見"]').click()
# 獲取全部上下文
cons = driver.contexts
print(cons)
# 跳轉到webview中
driver._switch_to.context("WEBVIEW_com.yipiao")
print(driver.context)


#  ['NATIVE_APP', 'WEBVIEW_com.yipiao']

#  WEBVIEW_com.yipiao

 

如果感覺安靜寫的對您有所幫助,點個關注,持續更新~~哪里有寫錯的地方,或者不懂的地方,可以下方留言,看到后第一時間回復~~


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM