Appium+Python之獲取toast


思考:手機APP上的必填或錯誤文本提示一般1-2s就會消失,比較難定位,所以一般的固定元素定位方式是不可用的,那我們如何定位toast呢?

前提:1.Appium1.6.3以上(包括1.6.3)

   2.下載安裝node.js(官網下載即可)

           3.下載安裝uiautomator2及其2個配置文件(appium-uiautomator2-server-debug-androidTest.apkappium-uiautomator2-server-v2.8.0.apk

   4.下載安裝Android SDK(tools文件夾下必須要有zipalign.exe工具,否則沒法啟動app)

   5.真機或模擬器版系統版本要求Android 5.0以上

環境准備:

一、下載安裝node.js

1.進入官網下載:https://nodejs.org/en/download/,  選擇適合自己操作系統的安裝文件,下載node js,並安裝(這里安裝路徑:C:\Program Files\nodejs)

以管理員權限打開cmd命令窗口

驗證nodejs是否安裝成功:node  -v

驗證npm是否安裝成功:npm  -v

2.改變原有路徑

(1)我們要先配置npm的全局模塊的存放路徑以及cache緩存的路徑,例如我希望將以上兩個文件夾放在NodeJS的主目錄下,便在NodeJs下建立"node_global"及"node_cache"兩個文件夾,輸入以下命令改變npm配置

npm config set prefix "C:\Program Files\nodejs\node_global"
npm config set cache "C:\Program Files\nodejs\node_cache"

 

(2)在系統環境變量添加系統變量NODE_PATH,輸入路徑C:\Program Files\nodejs\node_global\node_modules,此后所安裝的模塊都會安裝到該路徑下 

 

二、安裝淘寶npm(cnpm)

1.輸入以下命令安裝cnpm(注:“-g”這個參數意思是裝到global目錄下,也就是上面說設置的“C:\Program Files\nodejs\node_global”里面)

驗證cnpm是否安裝成功:cnpm  -v

npm install -g cnpm --registry=https://registry.npm.taobao.org

2.添加系統變量path的內容

因為cnpm會被安裝到C:\Program Files\nodejs\node_global下,在系統變量path下添加該路徑即可

三、安裝Appium

輸入以下命令安裝appium(1.8.1)

cnpm install -g appium@1.8.1

驗證Appium是否安裝成功:Appium -v

appium安裝成功后,里面可以看到uiautomator2及其2個配置文件

實際操作

一、啟動Appium

appium --session-override  -p 4723 -bp 4768 -U emulator-5554

-p   監聽端口號
-u  模擬器名稱
-bp  隨意

 二、運行模擬器

閃電或夜神模擬器

三、編寫腳本:

Step1:初始化

在capability配置內部增加:desired_caps[‘uiautomationName’]=’ uiautomator2’

DriverConfigure.py(配置腳本)
# coding:utf-8
'''
Created on 2018-11-7
@author: 丹姐
Project:配置驅動
'''
from appium import webdriver
import time




# appium遠程啟動app
# 定義獲取驅動方法
def get_driver():
    try:
        desired_caps ={}
        desired_caps['automationName'] = 'uiautomator2' #引入uiautomator2,用於定位toast
        desired_caps['platformName'] = 'Android'  # 設備系統
        desired_caps['platformVersion'] = '5.1.1'  # 設備系統版本
        desired_caps['deviceName'] = 'emulator-5554'  # 設備名稱
        desired_caps['app'] = r'E://app-debug.apk'  # 測試app
        desired_caps['appPackage'] = 'com.xywg.smartsitegov'  # 獲取包名
        desired_caps['appActivity'] = 'com.xywg.smartsitegov.activity.LaunchActivity'  # 獲取activity啟動
        desired_caps['unicodeKeyboard'] = 'True'#支持unicode輸入法
        desired_caps['resetKeyboard'] = 'True'#重置鍵盤
        desired_caps['noReset'] = 'true'  # 模擬用戶非首次啟動
        driver = webdriver.Remote("http://localhost:4723/wd/hub", desired_caps)
        time.sleep(5)  # 等待5秒
        return driver
    except Exception as e:
        raise e

Step2:定位Toast元素

(1)定義toast文本內容

(2)定義元素路徑

(3)定義等待時間

(4)組合文本內容和路徑進行定位:用format()連接路徑和文本內容

BasePage.py(基類腳本)

    # 重寫獲取toast方法
    def find_toast(self, message, timeout, poll_frequency):
        u'''獲取toast信息文本並驗證'''
        message1 = "//*[@text=\'{}\']".format(message)
        element = WebDriverWait(self.driver, timeout, poll_frequency).until(
            EC.presence_of_element_located((By.XPATH, message1)))
        return element.text

Step3:頁面調用獲取toast方法

XXXPage.py(頁面腳本)

        #獲取上傳圖片提示
        photo_toast = self.find_toast(u'請上傳圖片', 10, 0.01)
        print(u'圖片上傳必填提示:',photo_toast)

四、運行腳本

執行測試用例

 


免責聲明!

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



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