九色国产,午夜在线视频,新黄色网址,九九色综合,天天做夜夜做久久做狠狠,天天躁夜夜躁狠狠躁2021a,久久不卡一区二区三区

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費(fèi)電子書(shū)等14項(xiàng)超值服

開(kāi)通VIP
Appium原理與安裝 | 白月黑羽教Python

本教程講解如何使用Appium進(jìn)行手機(jī)應(yīng)用的自動(dòng)化。

學(xué)習(xí)本課程前,強(qiáng)烈推薦先學(xué)習(xí) Selenium Web 自動(dòng)化課程

Appium 用途和特點(diǎn)

點(diǎn)擊這里,邊看視頻講解,邊學(xué)習(xí)以下內(nèi)容

Appium 是一個(gè)移動(dòng) App (手機(jī)應(yīng)用)自動(dòng)化工具。

手機(jī)APP 自動(dòng)化有什么用?

  • 自動(dòng)化完成一些重復(fù)性的任務(wù)

    比如微信客服機(jī)器人

  • 爬蟲(chóng)

    就是通過(guò)手機(jī)自動(dòng)化爬取信息。

    為什么不通過(guò)網(wǎng)頁(yè)、HTTP 爬取呢?有的系統(tǒng)沒(méi)有網(wǎng)頁(yè),也不方便通過(guò)HTTP爬取

  • 自動(dòng)化測(cè)試

    很多企業(yè)里面有這樣的需求


Appium 自動(dòng)化方案的特點(diǎn):

  • 開(kāi)源免費(fèi)

  • 支持多個(gè)平臺(tái)

    iOS (蘋(píng)果)、安卓 App 的自動(dòng)化都支持。

  • 支持多種類型的自動(dòng)化

    支持 蘋(píng)果、安卓 應(yīng)用 原生界面 的自動(dòng)化

    支持 應(yīng)用 內(nèi)嵌 WebView 的自動(dòng)化

    支持 手機(jī)瀏覽器 中的 web網(wǎng)站自動(dòng)化

    支持 flutter 應(yīng)用的自動(dòng)化

  • 支持多種編程語(yǔ)言

    像 Selenium 一樣, 可以用多種編程語(yǔ)言 調(diào)用它 開(kāi)發(fā)自動(dòng)化程序。

自動(dòng)化原理

我們先來(lái)看一下Appium自動(dòng)化的原理圖

這圖是不是很眼熟?

對(duì)啦,和Selenium 原理圖很像。因?yàn)?Appium自動(dòng)化架構(gòu)就是借鑒的Selenium。

大家看看這幅圖, 包含了 3個(gè)主體部分 : 自動(dòng)化程序、Appium Server、移動(dòng)設(shè)備

  • 自動(dòng)化程序

    自動(dòng)化程序是由我們來(lái)開(kāi)發(fā)的,實(shí)現(xiàn)具體的 手機(jī)自動(dòng)化 功能。

    要發(fā)出具體的指令控制手機(jī),也需要使用 客戶端庫(kù)。

    和Selenium一樣,Appium 組織 也提供了多種編程語(yǔ)言的客戶端庫(kù),包括 java,python,js, ruby等,方便不同編程語(yǔ)言的開(kāi)發(fā)者使用。

    我們需要安裝好客戶端庫(kù),調(diào)用這些庫(kù),就可以發(fā)出自動(dòng)化指令給手機(jī)。

  • Appium Server

Appium Server 是 Appium 組織開(kāi)發(fā)的程序,它負(fù)責(zé)管理手機(jī)自動(dòng)化環(huán)境,并且轉(zhuǎn)發(fā) 自動(dòng)化程序的控制指令 給 手機(jī),并且轉(zhuǎn)發(fā) 手機(jī)給 自動(dòng)化程序的響應(yīng)消息。

  • 手機(jī)設(shè)備

    我們這里說(shuō)的手機(jī)設(shè)備,其實(shí)不僅僅是手機(jī),包括所有 蘋(píng)果、安卓的移動(dòng)設(shè)備,比如:手機(jī)、平板、智能手表等。

    為了直觀方便的講解,這里我們簡(jiǎn)稱: 手機(jī)

    當(dāng)然手機(jī)上也包含了 我們要自動(dòng)化控制的 手機(jī)應(yīng)用APP。

    手機(jī)設(shè)備為什么能 接收并且處理自動(dòng)化指令呢?

    因?yàn)?,Appium Server 會(huì)在手機(jī)上 安裝一個(gè) 自動(dòng)化代理程序, 代理程序會(huì)等待自動(dòng)化指令,并且執(zhí)行自動(dòng)化指令

比如:要模擬用戶點(diǎn)擊界面按鈕,Appium 自動(dòng)化系統(tǒng)的流程是這樣的:

  • 自動(dòng)化程序 調(diào)用客戶端庫(kù)相應(yīng)的函數(shù), 發(fā)送 點(diǎn)擊元素 的指令(封裝在HTTP消息里)給 Appium Server

  • Appium Server 再轉(zhuǎn)發(fā)這個(gè)指令給 手機(jī)上的自動(dòng)化代理

  • 手機(jī)上的自動(dòng)化代理 接收到 指令后,調(diào)用手機(jī)平臺(tái)的自動(dòng)化庫(kù),執(zhí)行點(diǎn)擊操作,返回點(diǎn)擊成功的結(jié)果給 Appium Server

  • Appium Server 轉(zhuǎn)發(fā)給 自動(dòng)化程序

  • 自動(dòng)化程序了解到本操作成功后,繼續(xù)后面的自動(dòng)化流程

其中,自動(dòng)化代理控制,使用的什么庫(kù)來(lái)實(shí)現(xiàn)自動(dòng)化的呢?

如果測(cè)試的是蘋(píng)果手機(jī), 用的是蘋(píng)果的 XCUITest 框架 (IOS9.3版本以后)

如果測(cè)試的是安卓手機(jī),用的是安卓的 UIAutomator 框架 (Android4.2以后)

這些自動(dòng)化框架提供了在手機(jī)設(shè)備上運(yùn)行的庫(kù),可以讓程序調(diào)用這些庫(kù),像人一樣自動(dòng)化操控設(shè)備和APP,比如:點(diǎn)擊、滑動(dòng),模擬各種按鍵消息等。

自動(dòng)化環(huán)境搭建

點(diǎn)擊這里,邊看視頻講解,邊學(xué)習(xí)以下內(nèi)容

本教程主要講解 安卓APP的自動(dòng)化。

環(huán)境搭建需要下載安裝不少軟件,而且還有不少是國(guó)外網(wǎng)站下載的。

為了方便各位朋友,白月黑羽把這些軟件 最新的安裝包 都放在如下的百度網(wǎng)盤(pán)鏈接中了,請(qǐng)大家自行下載。

鏈接:https://pan.baidu.com/s/19C9fGmoXne8DgfXhrTB2TQ

提取碼:kgwb

安裝client編程庫(kù)

根據(jù)原理圖, 我們知道自動(dòng)化程序需要調(diào)用客戶端庫(kù)和 Appium Server 進(jìn)行通信。

因?yàn)槲覀兘榻BPython語(yǔ)言開(kāi)發(fā),所以當(dāng)然是用pip安裝,如下

pip install appium-python-client

安裝Appium Server

Appium Server 是用 nodejs 運(yùn)行的,基于js開(kāi)發(fā)出來(lái)的。

Appium組織為了方便大家安裝使用,制作了一個(gè)可執(zhí)行程序 Appium Desktop,把 nodejs 運(yùn)行環(huán)境、Appium Server 和一些工具 打包在里面了,只需要簡(jiǎn)單的下載安裝就可以了。

可以從 上面給出的百度網(wǎng)盤(pán)連接 下載安裝: Appium-windows-1.15.1.exe


附加信息: Appium Desktop官方下載,點(diǎn)擊這里打開(kāi)下載頁(yè)面

安裝JDK

本教程主要講解 安卓APP的自動(dòng)化,必須要安裝安卓SDK(后面會(huì)講到),而安卓SDK需要 JDK 環(huán)境。

可以從 上面給出的百度網(wǎng)盤(pán)連接 下載安裝: jdk-8u211-windows-x64.exe


安裝好之后,還需要添加一個(gè)環(huán)境變量 JAVA_HOME ,指定 值 為 jdk安裝目錄,比如

JAVA_HOME   d:\tools\java\jdk1.8.0_211

具體操作參考視頻講解。

安裝 Android SDK

對(duì)于安卓APP的自動(dòng)化,Appium Server 是需要 Android SDK的。

因?yàn)橐玫嚼锩娴囊恍┕ぞ?,比?要執(zhí)行命令設(shè)置手機(jī)、傳送文件、安裝應(yīng)用、查看手機(jī)界面等。

可以從 上面給出的百度網(wǎng)盤(pán)連接 下載最新的 Android SDK文件包: androidsdk.zip ,并且解壓,即可。


解壓完成后,需要 配置一下 添加一個(gè) 環(huán)境變量 ANDROID_HOME ,設(shè)置值為sdk包解壓目錄,比如 d:\tools\androidsdk


另外,還推薦大家配置環(huán)境變量 PATH ,加入 adb所在目錄, d:\tools\androidsdk\platform-tools\

注意:是 添加 該目錄到環(huán)境變量PATH中, !??!不是替換!?。?/code> ,否則會(huì)導(dǎo)致系統(tǒng)命令都找不到的嚴(yán)重后果,初學(xué)者 請(qǐng)對(duì)照視頻講解操作。

連接手機(jī)

上述的軟件環(huán)境都準(zhǔn)備好以后,要自動(dòng)化手機(jī)APP,需要:

  • 在你運(yùn)行程序的電腦上 用 USB線 連接上 你的安卓手機(jī)

  • 進(jìn)入 手機(jī)設(shè)置 -> 關(guān)于手機(jī) ,不斷點(diǎn)擊 版本號(hào) 菜單(7次以上),

  • 退出到上級(jí)菜單,在開(kāi)發(fā)者模式中,啟動(dòng)USB調(diào)試

如果手機(jī)連接USB線后,手機(jī)界面彈出 類似 如下提示。

選擇 允許USB調(diào)試。


注意:

有的手機(jī)系統(tǒng),可能需要一些額外的選項(xiàng)需要設(shè)置好。

比如,有的手機(jī),開(kāi)發(fā)者選項(xiàng)里 需要打開(kāi) 允許通過(guò)USB安裝應(yīng)用 等。

總之,給USB開(kāi)發(fā)調(diào)試 盡可能方便的控制手機(jī)。


連接好以后,打開(kāi)命令行窗口, 執(zhí)行 adb devices -l 命令來(lái)列出連接在電腦上的安卓設(shè)備。

如果輸出 類似如下的內(nèi)容:

List of devices attached4d0035dc767a50bb        device product:t03gxx model:GT_N7100 device:t03g

表示電腦上可以查看到 連接的設(shè)備,就可以運(yùn)行自動(dòng)化程序了。

一個(gè)例子

點(diǎn)擊這里,邊看視頻講解,邊學(xué)習(xí)以下內(nèi)容

下面是一段使用 Appium 自動(dòng)化的打開(kāi) B站 應(yīng)用,搜索 白月黑羽 發(fā)布的教程視頻,并且打印視頻標(biāo)題的示例。

from appium import webdriverfrom appium.webdriver.extensions.android.nativekey import AndroidKeydesired_caps = {  'platformName': 'Android', # 被測(cè)手機(jī)是安卓  'platformVersion': '8', # 手機(jī)安卓版本  'deviceName': 'xxx', # 設(shè)備名,安卓手機(jī)可以隨意填寫(xiě)  'appPackage': 'tv.danmaku.bili', # 啟動(dòng)APP Package名稱  'appActivity': '.ui.splash.SplashActivity', # 啟動(dòng)Activity名稱  'unicodeKeyboard': True, # 使用自帶輸入法,輸入中文時(shí)填True  'resetKeyboard': True, # 執(zhí)行完程序恢復(fù)原來(lái)輸入法  'noReset': True,       # 不要重置App  'newCommandTimeout': 6000,  'automationName' : 'UiAutomator2'  # 'app': r'd:\apk\bili.apk',}# 連接Appium Server,初始化自動(dòng)化環(huán)境driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)# 設(shè)置缺省等待時(shí)間driver.implicitly_wait(5)# 如果有`青少年保護(hù)`界面,點(diǎn)擊`我知道了`iknow = driver.find_elements_by_id("text3")if iknow:    iknow.click()# 根據(jù)id定位搜索位置框,點(diǎn)擊driver.find_element_by_id("expand_search").click()# 根據(jù)id定位搜索輸入框,點(diǎn)擊sbox = driver.find_element_by_id('search_src_text')sbox.send_keys('白月黑羽')# 輸入回車(chē)鍵,確定搜索driver.press_keycode(AndroidKey.ENTER)# 選擇(定位)所有視頻標(biāo)題eles = driver.find_elements_by_id("title")for ele in eles:    # 打印標(biāo)題    print(ele.text)input('**** Press to quit..')driver.quit()

運(yùn)行代碼前,要先 運(yùn)行 Appium Desktop

點(diǎn)擊這里,觀看視頻里面對(duì)上述代碼的講解

上面的代碼只是抓取一頁(yè)視頻標(biāo)題,要自動(dòng)化滾動(dòng)抓取所有的視頻標(biāo)題,實(shí)戰(zhàn)班學(xué)員 ,請(qǐng)聯(lián)系老師獲取參考代碼。

游客 也可以 分享課程 領(lǐng)取參考代碼,點(diǎn)擊這里查看

查找 應(yīng)用 Package 和 Activity

點(diǎn)擊這里,邊看視頻講解,邊學(xué)習(xí)以下內(nèi)容

沒(méi)有apk

如果你應(yīng)用已經(jīng)安裝在手機(jī)上了,可以直接打開(kāi)手機(jī)上該應(yīng)用,進(jìn)入到你要操作的界面

然后執(zhí)行

adb shell dumpsys activity recents | find "intent={"

會(huì)顯示如下,最近的 幾個(gè) activity 信息,

intent={act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10200000 cmp=tv.danmaku.bili/.ui.splash.SplashActivity}intent={act=android.intent.action.MAIN cat=[android.intent.category.HOME] flg=0x10000300cmp=com.huawei.android.launcher/.unihome.UniHomeLauncher}intent={flg=0x10804000 cmp=com.android.systemui/.recents.RecentsActivity bnds=[48,1378][10322746]}intent={flg=0x10000000 cmp=com.tencent.mm/.ui.LauncherUI}

其中第一行就是當(dāng)前的應(yīng)用,我們特別關(guān)注最后

cmp=tv.danmaku.bili/.ui.splash.SplashActivity

應(yīng)用的package名稱就是 tv.danmaku.bili

應(yīng)用的啟動(dòng)Activity就是 .ui.splash.SplashActivity

有apk

如果你已經(jīng)獲取到了 apk,在命令行窗口執(zhí)行

d:\tools\androidsdk\build-tools\29.0.3\aapt.exe dump badging d:\tools\apk\bili.apk | find "package: name="

輸出信息中,就有應(yīng)用的package名稱

package: name='tv.danmaku.bili' versionCode='5531000' versionName='5.53.1' platformBuildVersionName='5.53.1' compileSdkVersion='28' compileSdkVersionCodename='9'

在命令行窗口執(zhí)行

d:\tools\androidsdk\build-tools\29.0.3\aapt.exe dump badging d:\tools\apk\bili.apk | find "launchable-activity"

輸出信息中,就有應(yīng)用的啟動(dòng)Activity

launchable-activity: name='tv.danmaku.bili.ui.splash.SplashActivity'  label='' icon=''
自學(xué)我們的教程時(shí),應(yīng)該找個(gè)同桌 一起學(xué)習(xí),互相交流督促。

如果自學(xué)速度慢、難點(diǎn)搞不定,歡迎來(lái)報(bào) 實(shí)戰(zhàn)班 學(xué)習(xí)。
白月黑羽 1對(duì)1連線 講解答疑,大量練習(xí)實(shí)戰(zhàn),學(xué)習(xí)效果是自學(xué)沒(méi)法比的。還有商業(yè)項(xiàng)目實(shí)戰(zhàn),可以寫(xiě)入簡(jiǎn)歷。

點(diǎn)擊這里查看實(shí)戰(zhàn)班介紹 咨詢微信:18502556834

本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)。
打開(kāi)APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
生活服務(wù)
熱點(diǎn)新聞
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服