程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式師世界 >> 編程語言 >  >> 更多編程語言 >> Python

Appium+Python移動端(Android)自動化測試環境搭建原來沒有那麼難!+ 帶你實戰去

編輯:Python

Appium 是一個移動端的自動化框架,可用於測試原生應用,移動網頁應用和混合型應 用,且是跨平台的。可用於 ios 和 Android 操作系統。

Appium+Python

  • 一、前提
    • 1.1 JDK安裝及其配置環境變量
    • 1.2 Android-SDK 安裝
    • 1.3 Node.js 安裝
    • 1.4 Appium 客戶端安裝
    • 1.5 python安裝及其配置環境變量
    • 1.6 pycharm安裝
    • 1.7 安裝python庫Appium-Python-Client
  • 二、實戰
    • 2.1點擊某個事件
    • 2.2點擊某組元素的某個事件
    • 2.3一組定位方式補充
    • 2.4一個定位方式補充

一、前提

1.1 JDK安裝及其配置環境變量

下載安裝配置也就是基本的(應該都會)

測試是否配置好 ,在cmd下輸入(下同)

java -version

1.2 Android-SDK 安裝

這個直接在Android Studio裡面就有

測試是否配置好

adb --version

1.3 Node.js 安裝

node.js官網下載:https://nodejs.org/en/
測試,進入node.js的安裝路徑,輸入

node --version

1.4 Appium 客戶端安裝

除了以上 jdk 和 Android-sdk 環境,我們使用 Appium 和 python 來進行自動化測試,還 需要安裝兩個東西,一個是Appium 的客戶端,一個是 Appium-python 庫。這兩個需要安裝的東西在加上手機就可以進行自動化測試,它們之間的關系是:python 代碼>Appium-python 庫>Appium->手機。

appium-desktop 下載地址:https://github.com/appium/appium-desktop/releases
(這個軟件有點大,我上傳了一個到百度網盤裡面
鏈接:https://pan.baidu.com/s/1WlaYoifeRGIF1Yc02deScQ
提取碼:wp4l )

下載下來之後右鍵管理員身份打開,打開之後選擇為使用這台電腦的任何人安裝(所有用戶),安裝之後的默認路徑是C:\Program Files\Appium

記得配置環境變量,如下

默認Host和Port,在python中寫好代碼要運行之前就點擊Start Server v1.18.0

1.5 python安裝及其配置環境變量

測試是否配置好

python

1.6 pycharm安裝

官網:https://www.jetbrains.com/pycharm/download/#section=windows
下載一個社區版就可以了哈哈哈

1.7 安裝python庫Appium-Python-Client

打開cmd,輸入

pip install Appium-Python-Client

二、實戰

  1. 開啟模擬器(我的是直接用的Android Studio的模擬器,所以在開啟模擬器之前我還要開啟Android Studio)
  2. 打開appium服務器
  3. 打開pycharm
  4. 打開cmd
  5. 打開uiautomatorviewer(在SDK目錄下)

2.1點擊某個事件

打開pycharm,新建一個py文件,輸入代碼

from appium import webdriver
import time
desired_caps=dict()
desired_caps['platformName']='Android'#平台的名字,不區分大小寫,“Android”;“ios”
desired_caps['platformVersion']='5.0'#平台的版本,可以不寫後續版本號
desired_caps['deviceName']='emulator-5554'#設備的名字,不能為空
desired_caps['appPackage']='com.google.android.apps.messaging' #要打開的應用程序包名
desired_caps['appActivity']='.ui.ConversationListActivity'#要打開的應用程序的界面名
desired_caps['udid']='emulator-5554'#連接設備的唯一標識
driver=webdriver.Remote('http://localhost:4723/wd/hub',desired_caps)#連接 appium 服務器
driver.start_activity("com.google.android.apps.messaging", ".ui.ConversationListActivity") #包名(前面是包名,後面是界面名)
driver.find_element_by_id("com.google.android.apps.messaging:id/start_new_conversation_button").click() #點擊事件
time.sleep(3)
driver.quit()

注意:(運行前提是你的Android Studio中的模擬器開啟了、appium服務器也開啟了)
第六行設備名字查詢:cmd 之後輸入

adb devices


第7行、第8行:要打開的應用程序包名、要打開的應用程序的界面名

找到你想要測試的程序,事先在模擬器中打開這個程序

cmd下輸入

adb shell dumpsys window | findstr mCurrentFocus

回車之後就可以看到你想測試的程序的包名和界面名(界面名可以省略包名,但是.點不可以省略)

如何查找點擊事件的特定id???(第13行)

cmd打開uiautomatorviewer

如果沒有添加到環境變量的話就去sdk目錄下找到uiautomatorviewer.bat
在Android Studio中第一行找到file——>Settings

點擊模擬器,在uiautomatorviewer找到resource-id,這個id是每個點擊事件特有的。

點擊1,在點擊你想要操作的事件2,就可以看到id了

運行python代碼之後模擬器就會自動開啟這個程序啦!

2.2點擊某組元素的某個事件

這個其實是通過索引來的

見代碼

from appium import webdriver
import time
desired_caps=dict()
desired_caps['platformName']='Android'#平台的名字,不區分大小寫,“Android”;“ios”
desired_caps['platformVersion']='5.0'#平台的版本,可以不寫後續版本號
desired_caps['deviceName']='emulator-5554'#設備的名字,不能為空
# desired_caps['appPackage']='com.google.android.apps.messaging' #要打開的應用程序包名
# desired_caps['appActivity']='.ui.ConversationListActivity'#要打開的應用程序的界面名
desired_caps['udid']='emulator-5554'#連接設備的唯一標識
driver=webdriver.Remote('http://localhost:4723/wd/hub',desired_caps)#連接 appium 服務器
# driver.start_activity("com.google.android.apps.messaging", ".ui.ConversationListActivity") #包名(前面是包名,後面是界面名)
# driver.find_element_by_id("com.google.android.apps.messaging:id/start_new_conversation_button").click() #點擊事件
# time.sleep(3)
# driver.quit()
#如何定位一組元素,比如說我要打開設置的第三個選項
driver.start_activity("com.android.settings",".Settings") #包名(前面是包名,後面是界面名)
A=driver.find_elements_by_class_name("android.widget.LinearLayout") #類名(記住類名要一樣,自己試試)
A[6].click()
time.sleep(5)
driver.quit()

裡面的class_name也是通過uiautomatorviewer去看的,比如我我要打開Connected devices這個選項,它的索引為6(第21行代碼),就會自動打開了

https://blog.csdn.net/hanhanwanghaha一個超級無敵可愛的人鴨 歡迎您的關注!
歡迎關注微信公眾號:寶藏女孩的成長日記
如有轉載,請注明出處(如不注明,盜者必究)

2.3一組定位方式補充

通過class_name(類名)定位一組元素

find_elements_by_class_name("class_name")

通過id定位一組元素

driver.find_elements_by_id("id_name")

通過xpath定位一組元素

driver.find_elements_by_xpath("xpath_name")

2.4一個定位方式補充

其實這個也就是一組的方式中的elements少個s

通過class_name(類名)定位一個元素

find_element_by_class_name("class_name")

通過id定位一個元素

driver.find_element_by_id("id_name")

通過xpath定位一個元素

driver.find_element_by_xpath("xpath_name")


這是我移動端的自動化測試,我記得以前還發了一個PC端的自動化測試 點擊此處

https://blog.csdn.net/hanhanwanghaha歡迎關注這個超級無敵可愛的人鴨,有什麼問題留言私信皆可,看見必回!
創作不易,如有轉載,請注明出處


  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式師世界 All Rights Reserved