Python+Appium自動化測試(3)-編寫自動化腳本


之前一篇博客已經講述怎樣手動使用appium-desktop啟動測試機上的app,但我們實際跑自動化腳本的過程中,是需要用腳本調用appium啟動app的,接下來就嘗試寫Python腳本啟動app並登陸app。環境為Windows10 + Python3.7 + appium1.18.0 + Android手機 + 今日頭條app + Pycharm

一,連接測試手機,獲取測試機及被測APP配置

具體的獲取方法請參考APP自動化測試之appium連接真機啟動app,配置信息如下:

{
  "platformName": "Android",
  "platformVersion": "10",
  "deviceName": "PCT_AL10",
  "appPackage": "com.ss.android.article.news",
  "appActivity": ".activity.MainActivity"
}

二,編寫Python腳本啟動app

1,編輯器推薦大家使用PyCharm,下載pycharm社區版本,免費無需破解。

2,因為登陸需要輸入賬號、密碼,所以這里新增了兩個參數。參數unicodeKeyboard即是否啟用Unicode格式輸入字符串,默認值為False,設置為True則表示啟用。參數resetKeyboard即使用unicodeKeyboard功能進行Unicode輸入后,是否將鍵盤重置為原始狀態,默認False。

desired_caps = {
    "platformName": "Android",
    "platformVersion": "10",
    "deviceName": "PCT_AL10",
    "appPackage": "com.ss.android.article.news",
    "appActivity": ".activity.MainActivity",
    "unicodeKeyboard": True,
    "resetKeyboard": True,
}

3,傳入desired_caps通過appium啟動app,構造driver對象(即創建一個session)。

driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub', desired_caps)

appium在本機開啟的話則IP為127.0.0.1,端口默認為4723

4,電腦連接手機,開啟appium服務,運行腳本,調試是否能啟動app。

from appium import webdriver

desired_caps = {
    "platformName": "Android",
    "platformVersion": "10",
    "deviceName": "PCT_AL10",
    "appPackage": "com.ss.android.article.news",
    "appActivity": ".activity.MainActivity",
    "unicodeKeyboard": True,
    "resetKeyboard": True,
}

# 啟動app
driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub', desired_caps)

我們會看到手機上今日頭條app被打開。

三,通過appium Inspector定位元素,登陸APP

1,登陸操作步驟為:

啟動今日頭條app --> 點擊【我知道了】--> 確定管理權限 --> 點擊底部tab“未登陸” 進入未登錄頁面 --> 點擊 “登陸” --> 點擊“...” --> 選擇密碼登陸 --> 輸入賬號密碼 --> 點擊登陸

2,根據操作步驟,使用appium的Inspector獲取登陸相關操作元素的屬性

[進入appium Inspector頁面](#),先點擊選擇元素按鈕,然后在窗口左側展示的手機頁面上,點擊選擇需要定位的元素,窗口右側會展示該元素的屬性值。手機app頁面切換后,點擊窗口刷新頁面按鈕,左側頁面會刷新。

appium Inspector獲取不到的元素屬性的話,還可以用Android SDK里自帶的工具uiautomatorviewer獲取。后面會專門介紹怎樣獲取元素屬性,這里不詳述。

3,登陸操作腳本

# -*- coding:utf-8 -*-

import time
from appium import webdriver

desired_caps = {
    "platformName": "Android",
    "platformVersion": "10",
    "deviceName": "PCT_AL10",
    "appPackage": "com.ss.android.article.news",
    "appActivity": ".activity.MainActivity",
    "unicodeKeyboard": True,
    "resetKeyboard": True,
}

# 啟動app
driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub', desired_caps)

# 登陸操作
driver.find_element_by_id("com.ss.android.article.news:id/chj").click() # 點擊【我知道了】
time.sleep(1)
driver.find_element_by_id("android:id/button1").click() # 點擊權限管理-確定按鈕
time.sleep(1)
driver.find_element_by_xpath("//android.widget.TabWidget/android.widget.RelativeLayout[@index=3]").click() # 點擊未登錄
time.sleep(1)
driver.find_element_by_id("com.ss.android.article.news:id/a1c").click() # 未登錄頁點擊登錄按鈕
time.sleep(1)
driver.find_element_by_id("com.ss.android.article.news:id/bfm").click() # 登錄頁點擊“。。。”
time.sleep(1)
driver.find_element_by_xpath("//android.widget.LinearLayout[@index=4]").click() # 選擇密碼登錄
time.sleep(1)
driver.find_element_by_id("com.ss.android.article.news:id/c7").send_keys("********")   # 輸入賬號
time.sleep(1)
driver.find_element_by_id("com.ss.android.article.news:id/ch").send_keys("********")   # 輸入密碼
time.sleep(1)
driver.find_element_by_id("com.ss.android.article.news:id/a31").click() # 點擊登錄
time.sleep(5)

我們查看手機,會發現手機正在自動做登錄今日頭條的app操作,且登錄成功。

至此,我們通過編寫一個簡單的Python腳本完成了登錄app的操作,如果加上斷言,就是一條完整的用例。


免責聲明!

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



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