最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

前端工程師用Node.js + Appium實(shí)現(xiàn)APP自動化

2023-08-03 00:33 作者:愚坤  | 我要投稿

簡介

最近在使用Appium做爬蟲功能,網(wǎng)上全是python + Appium的教程,Appium也支持Node.js開發(fā),作為前端工程師使用Node.js + Appium實(shí)現(xiàn)了自動化爬蟲功能。

零零散散折騰了小兩天的時間,踩了一些小坑,把流程和坑點(diǎn)整理出來供大家參考,希望讓大家少踩坑、快速實(shí)現(xiàn)功能。

原理介紹

我們先搞清楚幾個概念,看Appium是如何實(shí)現(xiàn)自動操作設(shè)備的,結(jié)合圖片從右往左看:

  • Device是設(shè)備,有安卓、IOS、Windows、Mac等不同類型的設(shè)備。

  • Appium是一個Web服務(wù)器,與設(shè)備連接,可以通過接口來操作設(shè)備,實(shí)現(xiàn)自動化,本身也是Node應(yīng)用。

  • Driver是驅(qū)動程序,不同的設(shè)備需要不同的驅(qū)動程序去控制,驅(qū)動程序?qū)儆贏ppium架構(gòu)中的一部分。

  • Client即調(diào)用Appium接口的客戶端,支持不同語言調(diào)用,比如Java、Node等語言調(diào)用。

總結(jié):用Java、Node.js作為客戶端調(diào)用 Appium服務(wù)端接口,Appium通過驅(qū)動控制設(shè)備,實(shí)現(xiàn)自動化操作。

環(huán)境搭建

不再一一介紹每個依賴的安裝步驟,網(wǎng)上搭建環(huán)境的文章很多,主要是如下兩點(diǎn)功能:

  1. 安裝Java、Android的SDK,確保 adb命令可用,用于連接手機(jī)。

  2. 安裝Node.js,用于運(yùn)行Appium 和 webdriver.io(Client Node.js)。

adb命令使用

adb 簡介,可以通過數(shù)據(jù)線或WIFI實(shí)現(xiàn)電腦與手機(jī)的連接,手機(jī)需要打開開發(fā)者調(diào)試選項(xiàng),連接成功后,可以通過adb命令操作手機(jī)、安裝、調(diào)試應(yīng)用。

  • 查看設(shè)備列表:adb devices,如果成功連接手機(jī),輸入該命令后會展示設(shè)備列表。

  • 安裝APK:adb install + apk路徑

  • 查看當(dāng)前打開的App包名與appActivity:

?例如微信:com.tencent.mm 是包名,.ui.launcherUI 是 appActivity,這些參數(shù)在后邊開發(fā)自動化功能時使用。

Appium 服務(wù)啟動

有兩種方式啟動服務(wù),一種是安裝命令行工具,通過命令行啟動;第二種是安裝 AppiumDesktop GUI軟件啟動,任選其一即可,作為前端工程師,首選命令行。


坑點(diǎn)1 不同手機(jī)的ADB設(shè)置

Appium啟動后,會在手機(jī)上自動安裝3個App,這里有個坑,不同的手機(jī)系統(tǒng)開發(fā)者選型設(shè)置不同,可能會有不同的問題,親測我的VIVO和OPPO機(jī)型,Vivo必須允許三個App為高耗電后臺運(yùn)行,OPPO開發(fā)者選項(xiàng)中需要需要開啟禁止權(quán)限監(jiān)控,否則無法自動安裝App,其他同事出現(xiàn)了App總是重復(fù)安裝的問題。

  • Vivo設(shè)置允許APP后臺高耗電:https://blog.csdn.net/a10703060237/article/details/118895357

  • Oppo開發(fā)者選項(xiàng)設(shè)置:?https://blog.csdn.net/HealerLX/article/details/122997161

小Tips:通過 Appium + 手機(jī)品牌 去搜索問題,更高效。?

?

頁面元素定位工具

appium inspector官方的GUI界面定位工具,可以通過參數(shù)啟動App,并將App的畫面和頁面結(jié)構(gòu)展示出來,以微信為例:填入我們獲取到的appPackage 和 appActivity。?

坑點(diǎn)2 啟動參數(shù)務(wù)必增加 appium:noReset為true

這里有一個坑需要注意,必須設(shè)置appium:noReset參數(shù)為true,不然每次啟動會清空你的App歷史數(shù)據(jù),我的微信數(shù)據(jù)被清理了 ??。

?點(diǎn)擊Start Session按鈕就可以看到頁面的截圖、結(jié)構(gòu)和元素的信息了。?

自動化開發(fā)

如果通過adb連接手機(jī),并通過 appium inspector 成功獲取到界面元素,那么恭喜你已經(jīng)完成了80%的進(jìn)展,剩下的就是通過Node.js + webdriver.io 開發(fā)自動化腳本,App自動跑起來了。

開發(fā)前這里我們要掌握webdriver.io的幾個基本用法:

  1. 連接設(shè)備

  2. 通過頁面元素選擇器實(shí)現(xiàn)元素的單選、多選。

  3. 獲取元素屬性、點(diǎn)擊元素。

  4. 滑動頁面

  5. 保存圖片

webdriver.io 的選擇器和jquery的語法很類似,看一個Demo相信你就掌握了。



坑點(diǎn)3 滑動操作加時間

webdriver.io的文檔中關(guān)于滑動操作,并沒有提示必須加滑動時間,但實(shí)際開發(fā)中不加滑動時間,在App上會變成點(diǎn)擊 + 滑動操作,經(jīng)常會出現(xiàn)類似長按的操縱,所以務(wù)必加上wait的參數(shù)。

坑點(diǎn)4 鍵盤會被隱藏

unicodeKeyboard設(shè)置為false會將你的手機(jī)輸入法關(guān)掉,重新啟動輸入法應(yīng)用就可以了,還沒研究清楚unicodeKeyboard參數(shù)的意義,大家實(shí)踐后可以補(bǔ)充下。

效果展示

掌握選擇器和操作語法后,前端工程師就能很快的實(shí)現(xiàn)自己的功能了,下邊的截圖是爬取我的微信視頻號中的評論數(shù)據(jù)。?

?

總結(jié)

我們再回顧下:

  • 環(huán)境:安卓JavA、Android的SDK,安裝Node.js 和 Appium命令行。

  • 工具:adb連手機(jī)看參數(shù)、 Appium命令行啟動服務(wù)、appium-inspector查看頁面元素。

  • 流程:使用Node+ webdriverio,實(shí)現(xiàn)操作設(shè)備。

  • 語法:webdriverio 元素選擇、模擬點(diǎn)擊、滑動,獲取元素屬性 + 圖片。

采坑:

  • 不同手機(jī)的開發(fā)者選項(xiàng)設(shè)置。

  • 啟動參數(shù)務(wù)必加noReset。

  • 滑動事件務(wù)必加wait參數(shù)。

  • 鍵盤被隱藏,重新打開輸入法即可。

最后,爬蟲有風(fēng)險,大家不要做違法違規(guī)的事,我是前端工程師秦少衛(wèi),不到之處懇請斧正,歡迎大家點(diǎn)贊關(guān)注評論,我們一起成長。

相關(guān)鏈接:

  • appium文檔:https://appium.io/docs/en/2.0/cli/args/

  • webdriver.io文檔:https://webdriver.io/docs/api/

  • appium-uiautomator2-driver:https://github.com/appium/appium-uiautomator2-driver

  • appium inspector:https://github.com/appium/appium-inspector


前端工程師用Node.js + Appium實(shí)現(xiàn)APP自動化的評論 (共 條)

分享到微博請遵守國家法律
昌江| 鸡东县| 平原县| 临沧市| 禄劝| 班戈县| 平塘县| 宜君县| 阆中市| 佛冈县| 临泉县| 翼城县| 全南县| 公主岭市| 怀安县| 米林县| 新宁县| 青州市| 沅江市| 龙门县| 永丰县| 左贡县| 新宁县| 乌兰县| 沧州市| 渝北区| 桂平市| 镇江市| 涟源市| 东丽区| 宿松县| 东明县| 上虞市| 靖安县| 四子王旗| 堆龙德庆县| 宁津县| 乌拉特前旗| 芒康县| 桃园县| 偃师市|