Python+Appium學習篇之WebView處理


1.認識WebView

實例說明:

當你打開百度閱讀APP→VIP全站去廣告→用自帶的 UI Automator去定位里面的元素,如圖:

不管你去定位  '規則詳情'  '開通'等等,都會定位不到,只能顯示一個整體頁面,這個就是WebView

Note:

① 可以理解與selenium里的iframe類似

②在右邊定位里有明確的表示是 WebView

③點擊一個鏈接后,有進度條加載后頁面一般都是Webview.  也就是說,是一個H5頁面了

④UI Automator 不能定位到里面的元素

處理方法1:

①執行  print(driver.contexts)  獲取所有的上下文

②在切換到他的webview里面去(類似selenium里的切換窗口)

③獲取到他的webview源碼,在其他瀏覽器打開,獲取他的xpath路徑,或者其他定位方法

#coding:utf-8
from appium import webdriver
import time
u'''智行火車票,webview頁面定位'''
desired_caps = {'platformName': 'Android',
                'deviceName': '9a762346',
                'platformVersion': '6.0.1',
                'noReset': True,
                'appPackage': 'com.yipiao',
                'appActivity': 'com.zt.main.entrance.ZTLaunchActivity'}
driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub', desired_caps)
time.sleep(10)
print(driver.context)
driver.find_element_by_xpath('//*[@text="我的"]').click()
time.sleep(3)
driver.find_element_by_xpath('//*[@text="產品意見"]').click()
time.sleep(3)
print(driver.contexts)

driver._switch_to.context('WEBVIEW_com.yipiao')
print('切換成功')
p=driver.page_source
with open('1111.html','wb') as f:
    f.write(p.encode('utf-8'))
time.sleep(2)
#driver.find_element_by_xpath("//*[contains(text(),'【搶票】我能搶到票嗎')]").click()
driver.find_element_by_xpath(".//*[@id='container']/div/div/section[2]/ul/li[2]/a/div[1]/span").click()

處理方法2:

主要是你已經確定他是一個webview,但是打印全部上下文返回的list里只有NATIVE_APP,無法進行切換。

就不要去切換了,當做是APP原生的,只需要定位到某個元素就行

這種情況不建議用獲取源碼,沒太大用。

   

#coding:utf-8
from appium import webdriver
import time
u'''百度閱讀,webview頁面定位'''
desired_caps = {"platformName": "Android",
                "deviceName": "9a762346",
                "platformVersion": "6.0.1",
                "noReset": True,
                "appPackage": "com.baidu.yuedu",
                "appActivity": "com.baidu.yuedu.splash.SplashActivity"}
driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub', desired_caps)
time.sleep(10)
driver.find_element_by_accessibility_id('VIP').click()
time.sleep(3)
driver.find_element_by_accessibility_id("規則詳情").click()

 


免責聲明!

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



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