Appium python自動化測試系列之混合app實戰(十一)

來源:互聯網
上載者:User

標籤:直接   view   switch   練習   實戰   頁面   div   回顧   報錯   

12.1 什麼是混合App12.1.1 混合app定義

  什麼是混合app,其實這個不言而喻,我們的app正常來說應該都是native的,但是實際工作中卻不是,反正種種原因我們的app會有native的而且中間還會有H5頁面,這其實就是我們常說的混合,當然還有一種就是純H5的,但是這裡我們不做過多的講解。

12.2 混合app實戰思路12.2.1 代碼實戰

  在前面的的章節內嵌h5頁面定位我們就已經講過這個問題,其實本講的內容大家可以仔細把定位的內嵌h5定位問題再回顧一遍那麼你就能夠理解這裡面的東西,這裡會有一個問題是,在我們的app自動化中和web自動化中會有一些區別,這裡一些api的用法上需要注意一下。下面我們還是來看一個流程,看下面兩張圖片:

第一張圖片是我們app的原生頁面:

第二張圖片是我們的webview的介面:

 

我們在前面的章節講過如果我們需要從第一個頁面切換到第二個頁面的時候我們需要進行“context”的切換,只有當我們切換了之後才能夠進行進一步對該頁面進行操作,看下面代碼:

def view(self):#擷取當前頁面所有的contexts  time.sleep(5)    webview = self.driver.contexts  #在擷取到的contexts list裡面去挨個迴圈  for context in webview:  #判斷迴圈中單個的context是否是webview,如果是就進行切換,並且跳出迴圈    if ‘WEBVIEW‘ in context:      self.driver.switch_to.context(context)      break  self.driver.find_element_by_link_text(‘JAVA‘).click()

 

到目前為止我們是不是就能夠很輕鬆自由的操作app內嵌的H5頁面了呢。動手操作一下

備忘:如果你用真機一直無法切換,不要激動這個很正常,用模擬器試一試,因為真機有很多限制,你可以嘗試root後去試一試。

 

12.3 混合app實戰

  上面的知識我相信大家很容易都懂了,但是在實際操作中大家會遇見一個起碼的問題,上面問題看我們下面講解,在我們正常的操作情況下我們是不是操作完第二個頁面是否應該關閉該頁面然後直接去操作其它頁面呢?於是乎就有了我們下面的代碼:

 

def view(self):#擷取當前頁面所有的contexts  time.sleep(10)     webview = self.driver.contexts  #在擷取到的contexts list裡面去挨個迴圈  for context in webview:  #判斷迴圈中單個的context是否是webview,如果是就進行切換,並且跳出迴圈    if ‘WEBVIEW‘ in context:      self.driver.switch_to.context(context)      break  self.driver.find_element_by_link_text(‘JAVA‘).click()      #關閉按鈕定位  self.driver.find_element_by_id("cn.com.open.mooc:id/left_icon").click

 

  動了手的小夥伴就知道問題了,你們無論如何都操作不了這個關閉按鈕或者是關閉了操作不了其他頁面的元素,上面的代碼無論如何到關閉的時候都報錯,對吧!但是你仔細思考會發現,我們前面講了在我們從原生的app中切換到h5頁面的時候都經過了切換,那麼現在的driver是不是還是處於h5的呢?思考思考思考!!!你driver都還在h5家裡,然後你讓他去操作原來家裡的東西能行嗎?答案肯定是否定的,所以這個時候你又需要將driver切換到原來的driver。

思考:如果你的app有超級多的h5 頁面然後在測試過程中你是不是需要進行不斷的切換?麻煩嗎?肯定啊。你每次切換都需要去寫這個方法你不嫌棄累我都嫌棄累。so,我們這裡是不是需要思考解決方案?那麼之前我們python說的函數封裝是不是起到作用了呢?這裡給大家留一個思考題,如果做到高效的封裝。

備忘:這個在工作中經常用到,大家一定去動手練習一下這個思考題。

提示:笨一點的方法是封裝成兩個方法,好一點封裝成一個方法,然後通過傳遞參數的形式去實現。

 

Appium python自動化測試系列之混合app實戰(十一)

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.