titans Selenium 自動化框架

梧桐樹下發表於2020-05-15

設計初衷

這個框架一開始就是為了自動化而產生的,因為之前公司有瀏覽器自動化的需求。一開始的框架其實是非常簡陋的,然後因為業務已經穩定了,所以不敢做太大變更。在離職後好好的總結了一下,重新將框架重構。

有什麼用

高度封裝 Selenium 的操作,只要配置 json 就能夠實現想要的功能。提供後臺動態修改配置,為所要網站更改頁面元素快速解決。從此不用再走修改框架原始碼,上傳 git 然後拉取到線上伺服器這些繁瑣流程。為你省下更多時間喝咖啡。

架構

  1. 前端 vue
  2. 後端 flask
  3. 自動化 titans

目錄結構

+---abstracts // 抽象類
+---bin // 二進位制檔案
+---components // 元件
+---configs // 配置檔案
+---core // 核心邏輯
+---hooks // 鉤子
+---logs // 日誌
+---manages // 全域性管理類
+---storages // 儲存儲存位置
|   \---cookies
+---utils // 通用工具

元件

│  click.py                 點選操作類                    
│  content.py               html標籤內容獲取類                    
│  cookie.py                cookie操作類                        
│  for.py                   for迴圈流程類                    
│  if.py                    if流程類                    
│  iframe.py                iframe操作類            
│  input.py                 輸入操作類                    
│  javascript.py            javascript程式碼執行類                  
│  judge.py                 條件判斷類                      
│  request.py               請求類                          
│  sleep.py                 睡眠延時類                        
│  wait.py                  等待事件類                       
│  while.py                 while迴圈類        
│  window.py                window標籤頁切換類                         

整體流程

如何使用?

這裡以自動化百度搜尋為例子,首先我們需要如下的配置

[
  {
    "component": "request",
    "args": {
      "url": "https://www.baidu.com"
    },
    "type": "browser"
  },
  {
    "component": "input",
    "args": {
      "xpath": "//input[@id='kw']",
      "text": "Python"
    },
    "type": "text"
  },
  {
    "component": "click",
    "args": {
      "xpath": "//input[@id='su']"
    }
  },
  {
    "component": "sleep",
    "args": {
      "time": 3600
    }
  }
]

配置中使用{}作為一個元件的呼叫,[]作為一個作用域來使用。 {}有三個基本引數:

  1. args配置引數

  2. type元件使用具體方法

  3. component所使用的元件名稱

[]主要是作用域,用於if, for, while迴圈這些有自己作用域的元件,然後在裡面呼叫{}就可以 實現流程控制了

具體效果如下:

專案地址:
github.com/dmf-code/titans

wiki 地址:github.com/dmf-code/titans/wiki

本作品採用《CC 協議》,轉載必須註明作者和本文連結

相關文章