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 配置檔案中正規表示式不生效APP
- Appcrawler 執行報錯 Exception in thread "main" java.lang.NullPointerExceptionAPPExceptionthreadAIJavaNull
- 關於 AppCrawler 執行過程中的幾個小問題APP
- python電子版Python
- 自動化測試的理想境界:AppCrawler自動遍歷工具APP
- 豆瓣top250(go版以及python版)GoPython
- python爬蟲系列版Python爬蟲
- 氣泡排序(python版)排序Python
- Socket爬蟲:Python版爬蟲Python
- Python學習手冊(第4版)PDF版Python
- 設計模式 1 (Python版)設計模式Python
- 資料結構(python版)資料結構Python
- 【Python】官方文件中文版Python
- Python寫春聯(turtle版)Python
- Python 生命遊戲(tkinter版)Python遊戲
- Python Tornado系列(甩鍋版)Python
- 最新版 appcrawler2.4.0 還是會存在截圖命名不正確的情況APP
- Python中的字串操作(Python3.6.1版本)Python字串
- 【Python】Python基礎知識【第一版】Python
- Excel轉Json升級版-PythonExcelJSONPython
- Python非同步爬蟲(aiohttp版)Python非同步爬蟲AIHTTP
- 來了!Python官方文件中文版Python
- Python複習筆記跳躍版Python筆記
- Python虛擬環境指南2019版Python
- ACM的Python版輸入輸出ACMPython
- python官方標準庫(中文版)Python
- Python-求和附介面(節約版)Python
- python正規表示式(簡明版)Python
- python爬蟲開發微課版pdf_Python爬蟲開發實戰教程(微課版)Python爬蟲
- Python 潮流週刊#72:Python 3.13.0 最終版已釋出!(摘要)Python
- Python學生資訊管理系統-簡易版(Python基礎)Python
- 是否存在鎖的演算法Python版演算法Python
- 支援向量機python實現(簡易版)Python
- python版網文圖片生成器Python
- Gurobi基礎教程(Python版)-系列教程2Python
- 《明日方舟》Python版公開招募工具Python
- Leetcode力扣1 兩數之和(Python版)LeetCode力扣Python