python 版 appcrawler
專案地址:https://gitee.com/hyt777/app-py-crawler
appPyCrawler
python+appcrawler = appPyCrawler
基於airtest+poco的app自動遍歷工具
該框架的核心思路來自於 思寒大佬做的appcrawler
但由於大佬是基於Scala編寫的,對於我來說執行起來有點不方便
並且蒙陰與目前AirTest下poco框架的發展,相比於appium來說穩定了許多
因此有了編寫一個airtest+poco的基於python的app爬蟲測試框架
安裝依賴
python 版本為 3.6
airtest安裝
pip install airtest
配置檔案
config.yml
devices: # airtest 連結裝置的字串
- Android://127.0.0.1:5037/127.0.0.1:62025?cap_method=JAVACAP
start_app: cn.ehanghai.android.hex # 啟動的應用的packa
start_action_list: # 啟動應用後的動作列表,只在應用啟動後按順序執行一次。
- action: wait # 等待
info: 10
- action: click # 點選,
info:
name: cn.ehanghai.android.hex:id/statement_agree
- action: swipe # 滑動,info可以選擇 left,right,也可以直接寫點(本質是 pos1,pos2 = eval("(0.8, 0.5), (0.1, 0.5)"))
info: (0.8, 0.5), (0.1, 0.5)
- action: swipe # 第二次滑動 目前沒有做次數設定,如果動作要重複多次,那就複製貼上幾次
info: (0.8, 0.5), (0.1, 0.5)
select_list: # 篩選列表,首先對控制元件進行初步篩選
- enabled: true
visible: true
type: android.widget.ImageView
- enabled: true
visible: true
type: android.widget.TextView
- enabled: true
visible: true
type: android.widget.ImageButton
- enabled: true
visible: true
editalbe: true
type: android.widget.EditText
- enabled: true
visible: true
checkable: true
type: android.widget.CheckBox
first_list: # 優先列表,出現以下控制元件優先點選
- name: cn.ehanghai.android.hex:id/cancle_tv
- name: cn.ehanghai.android.hex:id/iv_map_close
trigger_dict: # 遇到對應的控制元件,觸發對應的操作
修改暱稱:
target:
name: cn.ehanghai.android.hex:id/change_name
trigger:
action: send_key
text: _(:3」∠❀)_
time: 1
back_list: # 返回按鈕,一般最後點選
- name: cn.ehanghai.android.hex:id/iv_back
- name: 轉到上一層級
- text: 確定
- text: 儲存
black_list: # 黑名單
- text: 相簿
執行
``
python main.py
### 執行邏輯
程式注意的執行邏輯如下
```python
class Crawler:
def __init__(self):
self.config = yaml.load(open("config.yml", encoding="utf-8"))
self.driver = Driver(self.config)
self.init_actions = [ # 初始化用的action
StartAppInitAction(), # 啟動app設定
StartActionInitAction(), # app啟動後的動作設定
]
self.actions = [SelectAction(), # 初步進行控制元件篩選
FilterAction(), # 對特定的控制元件進行篩選
BlackAction(), # 將在黑名單中的控制元件排除
FirstAction(), # 優先點選的控制元件,執行run後續不執行
TriggerAction(), # 觸發器,遇到特定控制元件進行特定的操作,執行run後續不執行
BackHeadAction(), # 將返回型別的按鍵單獨取出來
NormalAction(), # 一般的控制元件,每個控制元件預設點選一次,執行run後續不執行
BackEndAction(), # 前面的都沒有執行,那麼點選返回按鈕
]
def crawler(self):
self.init()
while self.run():
pass
def init(self):
for action in self.init_actions:
action.run(self.config, self.driver)
def run(self):
for action in self.actions:
if not action.entrance(activity, self.config, self.driver):
return True
return False
主要是按順序執行action,可以隨意插入action來擴充功能
後續是希望可以通過配置檔案來動態配置action
新人第一次發帖,希望大家多多提建議
目前還只是demo能跑的階段,需要改的地方還很多。
我能力有限希望大家也來幫忙
相關文章
- 自動遍歷測試 AppCrawler - 思寒APP
- Appcrawler 執行報錯 Exception in thread "main" java.lang.NullPointerExceptionAPPExceptionthreadAIJavaNull
- 關於 AppCrawler 執行過程中的幾個小問題APP
- 自動化測試的理想境界:AppCrawler自動遍歷工具APP
- python電子版Python
- 豆瓣top250(go版以及python版)GoPython
- 氣泡排序(python版)排序Python
- Python 生命遊戲(tkinter版)Python遊戲
- Socket爬蟲:Python版爬蟲Python
- python爬蟲系列版Python爬蟲
- Spark入門(Python版)SparkPython
- Python學習手冊(第4版)PDF版Python
- 最新版 appcrawler2.4.0 還是會存在截圖命名不正確的情況APP
- 【Python】官方文件中文版Python
- Python寫春聯(turtle版)Python
- 設計模式 1 (Python版)設計模式Python
- 資料結構(python版)資料結構Python
- 《Python Cookbook》第三版中文版 3.0.0Python
- python 基礎教程第二版修訂版Python
- Python Tornado系列(甩鍋版)Python
- Python非同步爬蟲(aiohttp版)Python非同步爬蟲AIHTTP
- Python 3.3測試版釋出Python
- Python中的字串操作(Python3.6.1版本)Python字串
- 【Python】Python基礎知識【第一版】Python
- 開源!《Python 機器學習》第二版(附電子版 pdf)Python機器學習
- 爬蟲練手-豆瓣top250(go版以及python版)爬蟲GoPython
- python框架Django 1.5 正式版釋出,Python 3 支援Python框架Django
- 來了!Python官方文件中文版Python
- Python複習筆記跳躍版Python筆記
- Excel轉Json升級版-PythonExcelJSONPython
- ACM的Python版輸入輸出ACMPython
- python正規表示式(簡明版)Python
- python官方標準庫(中文版)Python
- 改進版的python求解數獨Python
- Python-求和附介面(節約版)Python
- Python 核心程式設計 第二版 中文版(PDF格式)Python程式設計
- python爬蟲開發微課版pdf_Python爬蟲開發實戰教程(微課版)Python爬蟲
- 萌新小白線上求解:獲取到的 App Source 內容是多個頁面的,怎麼使用 appcrawler 遍歷?APP