appium 提示報錯“TypeError: 'unicode' object is not callable”的解決方式!


這里提到的這個報錯,是小錯誤且容易經常會犯,有時需要特別注意使用。

目的要求結果:根據某個元素的id值獲取到對應id的text值,並且將獲取的text值與本身存在的text值做比較,查看text值是否相等,這在自動化測試過程中經常會存在的做法,主要用作測試之后的檢查,查看是否自動化執行到某一個步驟成功,因此通過id獲取到text的前提條件是“此id對應的text必須存在值”,如下截圖所示,只有id與text同時存在,才可以獲取到text值,否則失敗。

  

 

錯誤代碼如下:

self.log.info("check_search_message........檢查搜索短信")
        sleep(2)
        a = self.device.find_element_by_id("com.android.mms:id/action_compose_new").text()
        self.log.info(type(a))    
        self.log.info(a)
        if a == u'新建信息':
            self.log.info('新建信息判定成功!')
        else:
            self.log.info('新建信息判定失敗!')

  

  以上的寫法,運行將會出現報錯“TypeError: 'unicode' object is not callable”,錯誤的原因:self.device.find_element_by_id("com.android.mms:id/action_compose_new").text()中的text()不是一個函數,而是一個屬性,因為通過@property能把python中定義的函數,當做屬性訪問從而提供友好的訪問方式,來看appium的底層方法,如下圖:

  

改正點:

  去掉text后的括號,正確的為:self.device.find_element_by_id("com.android.mms:id/action_compose_new").text,以此text當做屬性來訪問,也被自己的給蠢哭了

 

歡迎加入微信群一起學習:

 


免責聲明!

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



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