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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

爬虫学习笔记(二十一)—— Appium

發布時間:2025/3/21 编程问答 50 豆豆
生活随笔 收集整理的這篇文章主要介紹了 爬虫学习笔记(二十一)—— Appium 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

  • 一、概念和作用
    • 1.1、概念
    • 1.2、常見應用
    • 1.3、特點
    • 1.4、Appium和Selenium
  • 二、安裝
    • 2.1、安裝Appium客戶端庫
    • 2.2、安裝Appium Desktop
    • 2.3、安裝JDK
    • 2.4、安裝Android SDK
    • 2.5、環境配置:
    • 2.6、安裝驗證
  • 三、連接模擬器
    • 3.1、修改模擬器文件
    • 3.2、設置模擬器
    • 3.3、進入開發者模式
    • 3.4、在模擬器中安裝軟件
  • 四、模擬器連接到Appium
    • 4.1、啟動和配置Appium
    • 4.2、Appium界面信息
    • 4.3、uiautomatorviewer
    • 4.4、shell 命令
  • 五、簡單的使用示例:嗶哩嗶哩
    • 5.1、Appium連接
    • 5.2、UI Selector
    • 5.3、Appium標簽操作
    • 5.4、滑動操作
    • 5.5、流程控制

一、概念和作用

1.1、概念

appium是一個移動 App (手機應用)自動化工具。支持 iOS 平臺和 Android 平臺上的原生應用,web應用和混合應用。它允許測試人員在不同的平臺(iOS,Android)使用同一套API來寫自動化測試腳本,這樣大大增加了iOS和Android測試套件間代碼的復用性。


1.2、常見應用

  • 自動化任務:微信機器人
  • 爬蟲:通過手機自動化,提取信息
  • 自動化測試:自動化測試,提高效率

1.3、特點

  • 支持多個平臺:iOS (蘋果)、安卓 App 的自動化都支持。
  • 支持跨平臺運行:Appium可以用在OSX,Windows以及Linux桌面系統上運行。
  • 支持多種類型的自動化:
  • 支持 蘋果、安卓 應用 原生界面 的自動化
  • 支持 應用 內嵌 WebView 的自動化
  • 支持 手機瀏覽器 中的 web網站自動化
  • 支持 flutter 應用的自動化
  • 支持多種編程語言:像 Selenium 一樣, 可以用多種編程語言調用它,開發自動化程序。
  • 擴展了WebDriver的協議:Appium沒有自己重新去實現一套。這樣的好處是以前的WebDriver API能夠直接被繼承過來,以前的 Selenium(WebDriver)各種語言的binding都可以拿來就用。
  • appium選擇了Client/Server的設計模式。只要client能夠發送http請求給server,那么的話client用什么語言來實現都是可以的,這就是appium及Selenium(WebDriver)如何做到支持多語言的原因;

1.4、Appium和Selenium

appium類庫封裝了標準Selenium客戶端類庫,為用戶提供所有常見的JSON格式selenium命令以及額外的移動設備控制相關的命令,如多點觸控手勢和屏幕朝向。

appium客戶端類庫實現了Mobile JSON Wire Protocol(一個標準協議的官方擴展草稿)和W3C WebDriver spec(一個傳輸不可預知的自動化協議,該協議定義了MultiAction 接口)的元素。

appium服務端定義了官方協議的擴展,為appium 用戶提供了方便的接口來執行各種設備動作,例如在測試過程中安裝/卸載App。這就是為什么我們需要appium特定的客戶端,而不是通用的Selenium 客戶端。當然,appium 客戶端類庫只是增加了一些功能,而實際上這些功能就是簡單的擴展了Selenium 客戶端,所以他們仍然可以用來運行通用的Selenium會話。


二、安裝

2.1、安裝Appium客戶端庫

指令:

pip install appium-python-client

2.2、安裝Appium Desktop

Appium Server 是用 NodeJS 運行的,基于JS開發出來的,Appium組織為了方便大家安裝使用,制作了一個可執行程序 Appium Desktop,把 NodeJS 運行環境、Appium Server,和一些工具 打包在里面了,只需要簡單的下載安裝就可以了。

網址:http://appium.io/

安裝示例:


2.3、安裝JDK

JDK官網下載:https://www.oracle.com/java/technologies/javase-downloads.html


2.4、安裝Android SDK

注意:現在已經不能單獨安裝Android SDK了,必須要一起下載谷歌集成好的包,包含了一個比較大的開發Android的IDE,就是Android Studio,而且Android的官方網站不能直接登錄了,這里把SDK必須的文件打了一個壓縮包,直接解壓就可以了。

鏈接:https://pan.baidu.com/s/1D3aPH5HLc73oaOtqdib4lA
提取碼:cgnb


2.5、環境配置:

  • jdk添加環境變量: JAVA_HOME,指定值為jdk安裝目錄,比如JAVA_HOME D:\SoftWare\JDK\jdk-16(根據自己的安裝目錄改變)
  • jdk,jre配置環境變量Path: %JAVA_HOME%\bin %JAVA_HOME%\jre\bin
  • 環境變量: ANDROID_HOME ,設置值為sdk包解壓目錄,比如 D:\SoftWare\Android SDK\androidsdk(根據自己的安裝目錄改變)
  • 配置adb環境變量 Path:加入 adb所在目錄, d:\tools\androidsdk\platform-tools\(根據自己的安裝目錄改變)

  • 2.6、安裝驗證

    1、JDK, JRE 安裝驗證

    2、adb 安裝驗證


    三、連接模擬器

    這里使用夜神模擬器,網站:https://www.yeshen.com/

    注:如果連接的是手機,直接進入“進入開發者模式”步驟進行

    3.1、修改模擬器文件

  • 打開安裝目錄,進入到bin目錄(比如:D:\SoftWare\夜神模擬器\Nox\bin)
  • 把第三節里安裝好的Android SDK里的adb.exe文件(比如我的在D:\SoftWare\Android SDK\androidsdk\platform-tools目錄下)復制到該目錄覆蓋掉該目錄已存在的adb.exe文件 (因為下載的Android SDK版本可能和模擬器的不一樣,無法通過adb控制模擬器,所以最好替換一下文件。)
  • 刪掉該目錄的nox_adb.exe文件,再復制一份adb.exe并重命名為nox_adb.exe
  • 啟動模擬器
  • 進入bin目錄打開控制臺,執行./nox_adb.exe connect 127.0.0.1:62001,然后執行adb devices -l,看到如下信息就表示成功了

  • 3.2、設置模擬器

    3.3、進入開發者模式

    1、進入“設置”,點擊 “關于平板電腦”–>多次點擊“版本號” ,進入開發者模式

    2、啟用USB調試,點擊“開發者模式”–>開啟“USB調試”


    3.4、在模擬器中安裝軟件

    首先需要保證模擬器已經連接成功,然后通過命令 adb devices -l 查看

    安裝軟件使用命令 adb install [安裝包路徑] ,路徑可以直接把安裝包拖進窗口。


    四、模擬器連接到Appium

    4.1、啟動和配置Appium

    打開Appium之后直接點擊Start Server就可以了

    點擊右上角放大鏡開始配置模擬器信息

    可以直接復制下面的JSON數據粘貼到右側的輸入框中,其中系統版本需要自己到模擬器中的關于平板電腦選項中自己查看

    {"platformName": "Android","platformVersion": "7.1.2","deviceName": "BieYa" }

    全部信息填寫完成后點擊Start Session啟動將Appium連接至模擬器,這時模擬器中會自動安裝一個Appium Settings的軟件,Appium通過這個軟件控制模擬器的運行。


    4.2、Appium界面信息


    4.3、uiautomatorviewer

    這個工具可以查看APP元素的屬性,還提供了一組API,用于構建在用戶應用和系統應用上執行交互的界面測試。Appium也封裝了這個工具里面的API,所以也可以在Appium中使用這些API來操作模擬器。

    參考谷歌安卓官方文檔介紹: https://developer.android.google.cn/training/testing/ui-automator

    截取手機元素

    元素的屬性

    • NAF:true 輸入框不能輸入字符
    • index:表示父節點的第幾個子節點
    • resource_id:類似于id
    • text:文本信息
    • class:類似于標簽名與class
    • package:包名
    • content-desc:節點描述信息
    • checkable :是否是可選擇的
    • checked:是否是已選擇的
    • clickable:是否是可點擊的
    • enabled:可用狀態
    • focusable:是否可以聚焦
    • focused:是否是聚焦狀態的
    • scrollable:是否是可滾動的
    • long-clickable:是否可長按
    • bounds:坐標 左上角和右下角

    4.4、shell 命令

    1、查看app應用名

    adb shell dumpsys activity | findstr mFocusedActivity

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

    2、查看輸入法內容

    adb shell ime list -s

    3、從默認的appium輸入法切換到搜狗輸入法

    adb shell ime set io.appium.settings/.UnicodeIME

    五、簡單的使用示例:嗶哩嗶哩

    5.1、Appium連接

    from appium import webdriver import time from appium.webdriver.extensions.android.nativekey import AndroidKeydesired_caps = {'platformName': 'Android', #被測的手機是安卓'platformVersion': '7.1.2', #手機安卓版本'deviceName': 'BieYa', #設備名,安卓手機可以隨意填寫'appPackage': 'tv.danmaku.bili', #啟動APP package名稱 shell用查看app應用名'appActivity': '.MainActivityV2', #啟動Activity名稱'unicodeKeyboard': True, #使用自帶輸入法,輸入中文是填true'resetKeyboard': True, #執行完程序恢復原來輸入法 經常來不及執行需要手動恢復'noReset': True, #不要重置APP 重要參數 務必填True'newCommandTimeout': 6000, #固定寫'automationName': 'UiAutomator2' }#連接APPium Server,初始化自動環境 建立連接,根據參數建立連接 安裝 driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub',desired_caps)

    5.2、UI Selector

    #設置缺省等待時間 driver.implicitly_wait(15) time.sleep(5) #UISelector控制手機元素 點擊搜索框 # code = 'new UiSelector().text("熱門").className("android.widget.TextView")' #點擊 ‘熱門’ 標簽 code = 'new UiSelector().className("android.widget.TextView")' ele = driver.find_element_by_android_uiautomator(code) # ele = driver.find_element_by_xpath('//android.widget.TextView[@content-desc="搜索"]') ele.click()

    5.3、Appium標簽操作

    #APPium標簽操作 time.sleep(3) #根據id定位搜索位置框,輸入 python search_tag = driver.find_element_by_id('tv.danmaku.bili:id/search_src_text') search_tag.send_keys('python') #輸入回車鍵,確定搜索 time.sleep(1) driver.press_keycode(AndroidKey.ENTER)

    5.4、滑動操作

    def swipUp(driver, t=800, n=1):'''向上滑動屏幕'''size = driver.get_window_size()x = size['width']*0.5 # x坐標y_start = size['height']*0.75 #起始點y坐標y_end = size['height'] * 0.25 #終點y坐標for i in range(n):driver.swipe(x,y_start,x,y_end,t)

    5.5、流程控制

    #1、加載所有標簽 -滑動 2、判斷底部 3、去重 title_list = [] #判斷底部 去重 while True:title_tags = driver.find_elements_by_id('tv.danmaku.bili:id/title')title_list_lenght = len(title_list) #判斷底部-起始長度if title_tags:for title_tag in title_tags:content = title_tag.textif content not in title_list: #去重print(content)title_list.append(content)current_length = len(title_list) #判斷底部-結束長度print(' ')if current_length == title_list_lenght:print('到底了....')breakswipUp(driver) #滑動 print('結束..........') driver.quit()

    結果演示:

    總結

    以上是生活随笔為你收集整理的爬虫学习笔记(二十一)—— Appium的全部內容,希望文章能夠幫你解決所遇到的問題。

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