日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python+appium实现自动化测试的示例代码

發布時間:2023/12/20 python 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python+appium实现自动化测试的示例代码 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

更多python教程請到友情連接: 菜鳥教程https://www.piaodoo.com

初中畢業讀什么技校 http://cntkd.net

茂名一技http://www.enechn.com

ppt制作教程步驟 http://www.tpyjn.cn

興化論壇http://www.yimoge.cn

電白論壇 http://www.fcdzs.com


目錄
  • 1.什么是Appium
  • 2.啟動一個app自動化程序的步驟
  • 3.appium服務介紹
  • 4.?appium客戶端使用
  • 5.adb的使用
  • ?6.Appium啟動過程分析

1.什么是Appium

appium是一個開源的測試自動化框架,可以與原生的、混合的和移動的web應用程序一直使用。它使用WebDriver協議驅動IOS(內置的測試引擎xcuitest)、Android(uiautomator2,Espresso)和Windows應用程序

原生應用程序:安卓程序是用JAVA或kotlin開發出來的,這種程序是原生應用程序,原生應用比較流暢,好調用,缺點是不同的端需要的開發語言不同

web應用程序:就web應用程序可以直接放到手機端來運行,web是用html+css+js編寫的

混合應用程序:結合原生與web應用程序,有些頁面用原生的,有些頁面使用web應用程序

國內比較出名的框架:

  • appium
  • airtest?現在是由阿里在維護,最開始是運用在游戲測試,和appium的功能差不多
  • uiautomator2(用法簡單,非常python,只支持原生的,不支持其他)

設計哲學:

  • ?你沒有必要為了自動化而重新編譯你的應用或者經任何方式修改它(Android/IOS系統自帶框架)
  • 你不應該被限制在特定的語言或框架上來編寫運行測試(API調用,接口)
  • 移動端自動化框架在自動化接口方面不應該重造輪子(WebDriver,appium是在selenium的基礎上開發的)
  • 移動端自動化框架應該開源,不但是在名義上而且在精神和實踐上都要實至名歸

2.啟動一個app自動化程序的步驟

打開模擬器,或者連接上手機(注意開發者模式以及USB調試模式已經開啟,手機授權要確認,否則是連接不上的)

在命令窗口輸入adb devices(查看設備名稱)? ? ? ??

開啟appium服務appium客戶端代碼連接服務

3.appium服務介紹

中文設置

除了簡單設置,還有一些高級設置,我們可以看一下

保存了可以查看預設,方便以后使用

?

編輯配置是進入修改環境變量?

?主機和端口號不需要設置,直接可以開啟服務器?

開啟后,可以看到服務器運行中,右邊三個按鈕的功能分別是啟動檢查器會話,獲取原始日志,停止運行服務器

?

?點擊后自動經記事本打開,如果安裝了其他編輯軟件,可以選擇打開方式

?

服務開啟后,就可以使用python來進行客戶端來連接服務

4.?appium客戶端使用

使用前確定已經安裝了,pip install appium-python-client,安裝后,直接導入使用

看一下Remote的源代碼

同時appium服務端也會顯示500的錯誤

?

猶豫appium1.20.2版本的,不像之前的版本需要傳入的必須參數多了,現在只需要傳platformName即可,所以具體可以看自己安裝的是什么版本,不過加上更多參數也不受影響

常用的caps參數:

  • platformName?平臺名稱(Android,IOS)
  • 必選deviceName?設備名稱(可選)? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?

  • udid (和deviceName作用一樣,在不同版本下這個參數重好用,所以以后用udid代替deviceName)
  • app apk的存放路徑(可選)
  • appActivity(頁面名稱,相當于web頁面中title) 和 appPackage(包名)
  • platformVersion 系統版本號(可選,版本不匹配會報錯)
  • noReset ?選擇True ?不重啟(意思是app的引導頁面,緩存數據等不清空,如果選擇False,app相當于重新安裝了,把之前的數據都清空了)
  • automationName 驅動名稱
  • browserName 直接測web用Chrome
  • autoWebview 開機進入webview模式(開機直接進入網頁模式,不需要進入原生頁面)
  • chromedriverExecutable 網頁瀏覽器驅動所放路徑(必須是完整路徑)
  • chromedriverExecutableDir 網頁瀏覽器驅動所放目錄
  • unicodekeyboard 開啟unicode編碼形式的鍵盤
  • resetKeyboard 重啟鍵盤 (和上一個一塊配置,兩個都設置成True,就可以開啟中文輸入,相當于我們的電腦安裝輸入法)
  • autoGrantPermissions 開啟手機權限(相當于web端中彈出來的alert彈框,無法定位元素,設置了True,就方便定位元素)

官網上還有很多用法,感興趣的可以參考一下:https://appium.io/docs/en/writing-running-appium/caps/

通過adb獲取appPackage和appActivity:

方法一:adb shell am monitor 監控操作(在cmd中執行此命令后,然后在手機上或模擬器上操作對應的app,就會顯示對應的包名)? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??

方法二:adb logcat | findStr -i displayed 從日志進行查詢包名和頁名稱? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??

?通過aapt獲取appPackage和appActivity:

aapt dump badging?全路徑.apk? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?

?拿到appPackage和appActivity后,可以使用包名的方式來訪問app,代碼如下:

from appium.webdriver import Remote

啟動一次請求

1.指明需要連接的服務地址和端口號

2.You must include a platformName capability

caps = {“platformName”: “Android”,
“udid”: “emulator-5554”,
“appPackage”: “com.lemon.lemonban”,
“appActivity”: “.activity.WelcomeActivity”}
driver = Remote(command_executor=‘http://127.0.0.1:4723/wd/hub’,
desired_capabilities=caps)

?運行結果:

總結:

  • platformName?必填,其他可選
  • deviceName重要
  • app安裝apk包,自動打開(已經安裝過的不會重新安裝),apk包路徑最好不要有中文,不知道為什么我的電腦用這種方式運行一直報錯,最后也未能解決,所以我使用包名運行? ? ? ? ?

  • 在復制appActivity時,注意一定是app的首頁頁面名稱,別復制錯了

5.adb的使用

adb(Android Debug Bridge)安卓調試橋:作用就是操作安卓手機中的app

相關命令:

adb devices?查看設備是否連接(可以手動連接?adb connect 127.0.0.1:5554,網上可以搜索不同模擬器的端口號)

adb?shell? 登錄設備 (進入手機系統里面)

adb shell dumpsys activity | find "mFocusedActivity"?查看前臺應用activity應用名稱(注意一定要打開了app,再去執行命令,dumpsys下有很多命令,可以查看幫助文檔進行更多了解)??

adb install?電腦/包名.apk?安裝軟件

adb uninstall??電腦/包名.apk?制裁軟件

adb pull?手機文件路徑?電腦文件路徑? ?從手機下載/拉文件電腦端

adb push?電腦文件路徑?手機文件路徑? 從電腦推送/上傳到手機端

adb shell pm list packages?顯示所有的安裝包名

?6.Appium啟動過程分析

客戶端通過wd/hub/session發送請求創建一個會話session? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?? ? ? ? ? ? ? ? ? ? ? ? ??

提供了參數就是cpas? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??

服務端接收到caps信息后,檢驗caps參數是否合法? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?

adb install io.setting.appium? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?

判斷有沒有包名? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??

啟動app? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?

獲取操作系統的版本:?

?adb.exe -P 5037 -s emulator-5554 shell getprop ro.build.version.release

判斷包名是否已經安裝到手機上:

adb.exe -P 5037 -s emulator-5554 shell dumpsys package com.lemon.lemon

啟用app:

adb.exe -P 5037 -s emulator-5554 shell am start -W -n com.lemon.lemonban/.activity.WelcomeActivity -S

到此這篇關于python+appium實現自動化測試的示例代碼的文章就介紹到這了,更多相關python appium 自動化測試內容請搜索菜鳥教程www.piaodoo.com以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持菜鳥教程www.piaodoo.com!

總結

以上是生活随笔為你收集整理的python+appium实现自动化测试的示例代码的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。