Python+Appium新手教程
準(zhǔn)備
1.電腦系統(tǒng):win10
2.手機(jī):安卓(沒(méi)錢(qián)買(mǎi)蘋(píng)果)
3.需要的工具可以從官網(wǎng)下載
- 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
安裝,邁開(kāi)腿的第一步
python(它可以用于桌面應(yīng)用,游戲開(kāi)發(fā),網(wǎng)絡(luò)爬蟲(chóng))
勾選Add Python x.x to PATH(沒(méi)有勾選的安裝成功后可手動(dòng)在環(huán)境變量里配置)
Install Now
安裝中…
安裝成功
驗(yàn)證是否成功,終端輸入‘python',出現(xiàn)以下內(nèi)容就成功了
暫時(shí)沒(méi)遇到紅海,有問(wèn)題評(píng)論留言~
jdk
Java 語(yǔ)言的軟件開(kāi)發(fā)工具包
appium server好像只支持1.8的jdk,so有時(shí)候太優(yōu)秀不一定能被認(rèn)可(狗頭保命)
安裝成功,需要在環(huán)境變量里配置一下
新建一個(gè)'JAVA_HOME'
把‘JAVA_HOME'添加到path里,注意是添加不是替換,后果不堪設(shè)想
確定確定確定,打開(kāi)cmd運(yùn)行測(cè)試一下是否安裝成功,輸入‘java -version',成功
編輯器PyCharm
敲代碼的
勾選64-bit launcher 64位啟動(dòng)器
.py那個(gè)隨意,我這邊勾選
成功
安裝過(guò)程暫時(shí)沒(méi)發(fā)現(xiàn)什么錯(cuò)誤
Appium-windows-x.x
運(yùn)行腳本需要,可查看運(yùn)行日志,可以獲取app頁(yè)面元素
第一次運(yùn)行可能有點(diǎn)慢,耐心等待就好了
右上角的三個(gè)按鈕分別是
- “start inspector session(啟動(dòng)檢查器會(huì)話(huà))”
- “Get Raw log(查看日志)"
- “Stop Server(停止服務(wù))”
通俗一點(diǎn) “沖啊” “讓我看看” “不想搞了”
下面一塊是看日志的
最喜歡的來(lái)了,菜單欄有個(gè)View—語(yǔ)言—中文(我的寶貝啊)
Appium_Python_Client
調(diào)用客戶(hù)端庫(kù)和 Appium Server 進(jìn)行通信
pip install Appium-Python-Client
或者去Pypi下載
下載后解壓使用cmd進(jìn)入Appium-Python-Client-x.x
輸入
python setup.py install
運(yùn)行 setup.py文件就好了
Android SDK
手機(jī)baiandroid系統(tǒng)的開(kāi)發(fā)發(fā)包,用來(lái)執(zhí)行命令設(shè)置手機(jī)、傳送文件、安裝應(yīng)用、查看手機(jī)界面等
找個(gè)風(fēng)水寶地解壓就好了
所有需要的工具都安裝成功了,來(lái)個(gè)表情包慶祝一下
連接手機(jī)
敲黑板,重點(diǎn)來(lái)了,做app自動(dòng)化肯定要用到手機(jī)噻,拿usb連接電腦
(1) 拿出你的手機(jī)-----打開(kāi)手機(jī)設(shè)置------找到關(guān)于手機(jī)-------一直點(diǎn)擊版本號(hào)直到出現(xiàn)提示
(2) 打開(kāi)手機(jī)的開(kāi)發(fā)者選項(xiàng),該開(kāi)的開(kāi),該關(guān)的關(guān),特別是USB調(diào)試這里一定要打開(kāi)
還有USB設(shè)置需要改一下,暫時(shí)只發(fā)現(xiàn)這兩個(gè)比較重要,有興趣的可以研究一下開(kāi)發(fā)人員選項(xiàng)
(3) 測(cè)試是否連接成功,在終端輸入‘a(chǎn)db devices -l',查看連接的設(shè)備,如果列表為空,檢查一下是不是有以上原因。
使用python+appium打開(kāi)手機(jī)app-B站
打開(kāi)PyCharm and appium,直接Start Server Vx,xx,x
新建一個(gè)項(xiàng)目
新建一個(gè).py,輸入以下代碼(單純打開(kāi)app)
# 導(dǎo)入webdriver from appium import webdriver # 初始化參數(shù) desired_caps = { 'platformName': 'Android', # 被測(cè)手機(jī)是安卓 'platformVersion': '10', # 手機(jī)安卓版本 'deviceName': 'xxx', # 設(shè)備名,安卓手機(jī)可以隨意填寫(xiě) 'appPackage': 'tv.danmaku.bili', # 啟動(dòng)APP Package名稱(chēng) 'appActivity': '.ui.splash.SplashActivity', # 啟動(dòng)Activity名稱(chēng) 'unicodeKeyboard': True, # 使用自帶輸入法,輸入中文時(shí)填True 'resetKeyboard': True, # 執(zhí)行完程序恢復(fù)原來(lái)輸入法 'noReset': True, # 不要重置App,如果為False的話(huà),執(zhí)行完腳本后,app的數(shù)據(jù)會(huì)清空,比如你原本登錄了,執(zhí)行完腳本后就退出登錄了 'newCommandTimeout': 6000, 'automationName': 'UiAutomator2' } # 連接Appium Server,初始化自動(dòng)化環(huán)境 driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps) # 退出程序,記得之前沒(méi)敲這段報(bào)了一個(gè)錯(cuò)誤 Error: socket hang up 啥啥啥的忘記了,有興趣可以try one try driver.quit()
不同的手機(jī)有不同的版本,自己找一下大概就是這個(gè)意思
手機(jī)安卓版本platformVersion:
每一個(gè)app都有appPackage、appActivity,那應(yīng)該在哪里查看呢
打開(kāi)終端輸入(手機(jī)需要連接電腦)
adb shell dumpsys activity recents | find “intent={”
cmp=tv.danmaku.bili/.ui.splash.SplashActivity就是我們需要的appPackage、appActivity了
appPackage = tv.danmaku.bili
appActivity = .ui.splash.SplashActivity
此時(shí)我的手機(jī)后臺(tái)是個(gè)這樣的
打開(kāi)成功,運(yùn)行的時(shí)候會(huì)在手機(jī)上安裝東西,需要手動(dòng)同意安裝,或者在開(kāi)發(fā)選項(xiàng)中開(kāi)權(quán)限,聽(tīng)懂鞭炮
獲取app元素信息
得到元素才能操控它
兩種方法
(1)使用appium
(2)使用uiautomatorviewer(Android SDK自帶的元素定位工具)
這兩個(gè)不可以同時(shí)使用,以我現(xiàn)在的技術(shù)來(lái)看我個(gè)人推薦使用appium
-----------------------------這是一條分割線(xiàn)------------------------------------
appium:打開(kāi)appium,點(diǎn)擊Start Inspector Session
輸入對(duì)應(yīng)的內(nèi)容(之前那段代碼把參數(shù)和值填進(jìn)去就好了)
打開(kāi)后我們可以看見(jiàn)這樣一個(gè)界面,鼠標(biāo)懸浮在手機(jī)界面上可以看到元素,點(diǎn)擊可在右側(cè)查看到需要的元素
uiautomatorviewer(Android SDK自帶的元素定位工具)
之前下載過(guò)的Android SDK,打開(kāi)路徑:androidsdk\tools\bin就可以找到uiautomatorviewer了,double click打開(kāi)它
會(huì)得到這樣的一個(gè)界面
在點(diǎn)擊左上角的device Screenshot(uiautomator dump)獲取手機(jī)上的屏幕,如果是不同的頁(yè)面需要重新點(diǎn)擊
鼠標(biāo)懸浮點(diǎn)擊可以看到這個(gè)元素的信息
有一些人點(diǎn)擊uiautomatorviewer.bat會(huì)閃退,試試下面這個(gè)辦法,如果不行百度去吧
開(kāi)玩笑的啦,我也是百度找方法的,找了好久沒(méi)啥子用,還是評(píng)論區(qū)留言一起解決吧(一起百度)
打開(kāi)環(huán)境變量,新建一個(gè) ANDROID_SWT
我的swt是在D:\app\androidsdk\tools\lib\x86_64,輸入正確路徑即可
確定確定確定,在重新試試double click它
知道元素后就可以操作它了
使用python+appium操作app-B站
目標(biāo):使用B站搜索‘泰坦尼克號(hào)'
常用的獲取元素方法有
find_element_by_id()
find_elements_by_class_name()
find_element_by_xpath()
find_element_by_css_selector()
# 導(dǎo)入webdriver from appium import webdriver # 初始化參數(shù) desired_caps = { 'platformName': 'Android', # 被測(cè)手機(jī)是安卓 'platformVersion': '10', # 手機(jī)安卓版本 'deviceName': 'xxx', # 設(shè)備名,安卓手機(jī)可以隨意填寫(xiě) 'appPackage': 'tv.danmaku.bili', # 啟動(dòng)APP Package名稱(chēng) 'appActivity': '.ui.splash.SplashActivity', # 啟動(dòng)Activity名稱(chēng) 'unicodeKeyboard': True, # 使用自帶輸入法,輸入中文時(shí)填True 'resetKeyboard': True, # 執(zhí)行完程序恢復(fù)原來(lái)輸入法 'noReset': True, # 不要重置App,如果為False的話(huà),執(zhí)行完腳本后,app的數(shù)據(jù)會(huì)清空,比如你原本登錄了,執(zhí)行完腳本后就退出登錄了 'newCommandTimeout': 6000, 'automationName': 'UiAutomator2' } # 連接Appium Server,初始化自動(dòng)化環(huán)境 driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps) # 設(shè)置等待時(shí)間,如果不給時(shí)間的話(huà)可能會(huì)找不到元素 driver.implicitly_wait(5) # 點(diǎn)擊搜索框 driver.find_element_by_id("expand_search").click() # 輸入“泰坦尼克號(hào)” driver.find_element_by_id("search_src_text").send_keys("泰坦尼克號(hào)") # 鍵盤(pán)回車(chē) driver.keyevent(66) # 因?yàn)樗阉魍旰缶椭苯油顺鯽pp了,看不到搜索結(jié)果頁(yè),所以我給了一個(gè)讓他停下的方法 input('**********') # 退出程序,記得之前沒(méi)敲這段報(bào)了一個(gè)錯(cuò)誤 Error: socket hang up 啥啥啥的忘記了,有興趣可以try one try driver.quit()
最后就是這樣子的
到此這篇Python+Appium新手教程的文章就介紹到這了,更多相關(guān)Python+Appium教程內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持腳本之家!
相關(guān)文章
Python推導(dǎo)式簡(jiǎn)單示例【列表推導(dǎo)式、字典推導(dǎo)式與集合推導(dǎo)式】
這篇文章主要介紹了Python推導(dǎo)式,結(jié)合簡(jiǎn)單實(shí)例形式分析了Python列表推導(dǎo)式、字典推導(dǎo)式與集合推導(dǎo)式基本使用方法,需要的朋友可以參考下2018-12-12python數(shù)字圖像處理之估計(jì)噪聲參數(shù)
這篇文章主要介紹了python數(shù)字圖像處理之估計(jì)噪聲參數(shù),圖像復(fù)原與重建,想了解圖像處理的同學(xué),一定要好好看看2021-04-04Python之標(biāo)點(diǎn)符號(hào)string.punctuation的使用
Python的string模塊提供了一個(gè)方便的屬性string.punctuation,其中包含所有ASCII標(biāo)點(diǎn)符號(hào)字符,這使得在處理和識(shí)別字符串中的標(biāo)點(diǎn)符號(hào)時(shí)非常有用,可以通過(guò)簡(jiǎn)單的in關(guān)鍵字來(lái)檢測(cè)字符是否為標(biāo)點(diǎn)2024-09-09python密碼學(xué)周期置換密碼學(xué)習(xí)
這篇文章主要為大家介紹了python密碼學(xué)周期置換密碼的學(xué)習(xí),有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-05-05pip search報(bào)錯(cuò)問(wèn)題及解決
這篇文章主要介紹了pip search報(bào)錯(cuò)問(wèn)題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-12-12