Python+Appium新手教程
準備
1.電腦系統:win10
2.手機:安卓(沒錢買蘋果)
3.需要的工具可以從官網下載
- https://appium.io/
- https://www.jetbrains.com/pycharm/
- https://www.python.org/
- https://www.oracle.com/cn/java/technologies/javase-downloads.html
安裝
- python
- jdk
- 編輯器PyCharm
- Appium-windows-x.x
- Appium_Python_Client
- Android SDK
安裝,邁開腿的第一步
python(它可以用於桌面應用,遊戲開發,網絡爬蟲)
勾選Add Python x.x to PATH(沒有勾選的安裝成功後可手動在環境變量裡配置)
Install Now
安裝中…
安裝成功
驗證是否成功,終端輸入‘python’,出現以下內容就成功瞭
暫時沒遇到紅海,有問題評論留言~
jdk
Java 語言的軟件開發工具包
appium server好像隻支持1.8的jdk,so有時候太優秀不一定能被認可(狗頭保命)
安裝成功,需要在環境變量裡配置一下
新建一個’JAVA_HOME’
把‘JAVA_HOME’添加到path裡,註意是添加不是替換,後果不堪設想
確定確定確定,打開cmd運行測試一下是否安裝成功,輸入‘java -version’,成功
編輯器PyCharm
敲代碼的
勾選64-bit launcher 64位啟動器
.py那個隨意,我這邊勾選
成功
安裝過程暫時沒發現什麼錯誤
Appium-windows-x.x
運行腳本需要,可查看運行日志,可以獲取app頁面元素
第一次運行可能有點慢,耐心等待就好瞭
右上角的三個按鈕分別是
- “start inspector session(啟動檢查器會話)”
- “Get Raw log(查看日志)”
- “Stop Server(停止服務)”
通俗一點 “沖啊” “讓我看看” “不想搞瞭”
下面一塊是看日志的
最喜歡的來瞭,菜單欄有個View—語言—中文(我的寶貝啊)
Appium_Python_Client
調用客戶端庫和 Appium Server 進行通信
pip install Appium-Python-Client
或者去Pypi下載
下載後解壓使用cmd進入Appium-Python-Client-x.x
輸入
python setup.py install
運行 setup.py文件就好瞭
Android SDK
手機baiandroid系統的開發發包,用來執行命令設置手機、傳送文件、安裝應用、查看手機界面等
找個風水寶地解壓就好瞭
所有需要的工具都安裝成功瞭,來個表情包慶祝一下
連接手機
敲黑板,重點來瞭,做app自動化肯定要用到手機噻,拿usb連接電腦
(1) 拿出你的手機—–打開手機設置——找到關於手機——-一直點擊版本號直到出現提示
(2) 打開手機的開發者選項,該開的開,該關的關,特別是USB調試這裡一定要打開
還有USB設置需要改一下,暫時隻發現這兩個比較重要,有興趣的可以研究一下開發人員選項
(3) 測試是否連接成功,在終端輸入‘adb devices -l’,查看連接的設備,如果列表為空,檢查一下是不是有以上原因。
使用python+appium打開手機app-B站
打開PyCharm and appium,直接Start Server Vx,xx,x
新建一個項目
新建一個.py,輸入以下代碼(單純打開app)
# 導入webdriver from appium import webdriver # 初始化參數 desired_caps = { 'platformName': 'Android', # 被測手機是安卓 'platformVersion': '10', # 手機安卓版本 'deviceName': 'xxx', # 設備名,安卓手機可以隨意填寫 'appPackage': 'tv.danmaku.bili', # 啟動APP Package名稱 'appActivity': '.ui.splash.SplashActivity', # 啟動Activity名稱 'unicodeKeyboard': True, # 使用自帶輸入法,輸入中文時填True 'resetKeyboard': True, # 執行完程序恢復原來輸入法 'noReset': True, # 不要重置App,如果為False的話,執行完腳本後,app的數據會清空,比如你原本登錄瞭,執行完腳本後就退出登錄瞭 'newCommandTimeout': 6000, 'automationName': 'UiAutomator2' } # 連接Appium Server,初始化自動化環境 driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps) # 退出程序,記得之前沒敲這段報瞭一個錯誤 Error: socket hang up 啥啥啥的忘記瞭,有興趣可以try one try driver.quit()
不同的手機有不同的版本,自己找一下大概就是這個意思
手機安卓版本platformVersion:
每一個app都有appPackage、appActivity,那應該在哪裡查看呢
打開終端輸入(手機需要連接電腦)
adb shell dumpsys activity recents | find “intent={”
cmp=tv.danmaku.bili/.ui.splash.SplashActivity就是我們需要的appPackage、appActivity瞭
appPackage = tv.danmaku.bili
appActivity = .ui.splash.SplashActivity
此時我的手機後臺是個這樣的
打開成功,運行的時候會在手機上安裝東西,需要手動同意安裝,或者在開發選項中開權限,聽懂鞭炮
獲取app元素信息
得到元素才能操控它
兩種方法
(1)使用appium
(2)使用uiautomatorviewer(Android SDK自帶的元素定位工具)
這兩個不可以同時使用,以我現在的技術來看我個人推薦使用appium
—————————–這是一條分割線————————————
appium:打開appium,點擊Start Inspector Session
輸入對應的內容(之前那段代碼把參數和值填進去就好瞭)
打開後我們可以看見這樣一個界面,鼠標懸浮在手機界面上可以看到元素,點擊可在右側查看到需要的元素
uiautomatorviewer(Android SDK自帶的元素定位工具)
之前下載過的Android SDK,打開路徑:androidsdk\tools\bin就可以找到uiautomatorviewer瞭,double click打開它
會得到這樣的一個界面
在點擊左上角的device Screenshot(uiautomator dump)獲取手機上的屏幕,如果是不同的頁面需要重新點擊
鼠標懸浮點擊可以看到這個元素的信息
有一些人點擊uiautomatorviewer.bat會閃退,試試下面這個辦法,如果不行百度去吧
開玩笑的啦,我也是百度找方法的,找瞭好久沒啥子用,還是評論區留言一起解決吧(一起百度)
打開環境變量,新建一個 ANDROID_SWT
我的swt是在D:\app\androidsdk\tools\lib\x86_64,輸入正確路徑即可
確定確定確定,在重新試試double click它
知道元素後就可以操作它瞭
使用python+appium操作app-B站
目標:使用B站搜索‘泰坦尼克號’
常用的獲取元素方法有
find_element_by_id()
find_elements_by_class_name()
find_element_by_xpath()
find_element_by_css_selector()
# 導入webdriver from appium import webdriver # 初始化參數 desired_caps = { 'platformName': 'Android', # 被測手機是安卓 'platformVersion': '10', # 手機安卓版本 'deviceName': 'xxx', # 設備名,安卓手機可以隨意填寫 'appPackage': 'tv.danmaku.bili', # 啟動APP Package名稱 'appActivity': '.ui.splash.SplashActivity', # 啟動Activity名稱 'unicodeKeyboard': True, # 使用自帶輸入法,輸入中文時填True 'resetKeyboard': True, # 執行完程序恢復原來輸入法 'noReset': True, # 不要重置App,如果為False的話,執行完腳本後,app的數據會清空,比如你原本登錄瞭,執行完腳本後就退出登錄瞭 'newCommandTimeout': 6000, 'automationName': 'UiAutomator2' } # 連接Appium Server,初始化自動化環境 driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps) # 設置等待時間,如果不給時間的話可能會找不到元素 driver.implicitly_wait(5) # 點擊搜索框 driver.find_element_by_id("expand_search").click() # 輸入“泰坦尼克號” driver.find_element_by_id("search_src_text").send_keys("泰坦尼克號") # 鍵盤回車 driver.keyevent(66) # 因為它搜索完後就直接退出app瞭,看不到搜索結果頁,所以我給瞭一個讓他停下的方法 input('**********') # 退出程序,記得之前沒敲這段報瞭一個錯誤 Error: socket hang up 啥啥啥的忘記瞭,有興趣可以try one try driver.quit()
最後就是這樣子的
到此這篇Python+Appium新手教程的文章就介紹到這瞭,更多相關Python+Appium教程內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章,希望大傢以後多多支持WalkonNet!
推薦閱讀:
- None Found