Select Page
提升 App 測試效率:UIAutoDev UI定位與 XPath 自動生成指南

提升 App 測試效率:UIAutoDev UI定位與 XPath 自動生成指南

Views: 0

UIAutoDev 是一款不可或缺的工具,它支援 Android 和 iOS 平台,提供直觀的圖形介面,讓開發者能夠輕鬆地定位 UI 元素、生成選擇器,並進行色彩分析。

UIAutoDev UI DEMO

🔧 UIAutoDev 的核心特色

1. 支援 Android 和 iOS 平台

UIAutoDev 同時支援 Android 和 iOS 裝置的 UI 元素檢視與操作。​對於 iOS,用戶需自行啟動 WebDriverAgent(WDA)服務,以實現與裝置的連接。​

2. 直觀的控件選擇與屬性檢視

透過滑鼠點選應用程式中的控件,UIAutoDev 會即時顯示該元素的屬性資訊,如 resource-idtextclass 等,並在控件樹中高亮顯示,方便用戶精確定位。​

3. 自動生成 XPath 選擇器

UIAutoDev 能夠根據選取的控件,自動生成多個 XPath 選擇器,並標示每個選擇器匹配的元素數量,協助用戶選擇最合適的定位方式。​

4. 色彩分析與坐標微調

工具提供找色功能,允許用戶獲取指定位置的 RGB 和 HSB 色值。​同時,透過方向鍵微調坐標,精確定位需要操作的區域,提升自動化腳本的準確性。​


🚀 安裝與使用指南

1. 安裝 Python 環境

確保系統已安裝 Python 3.8 或以上版本。​

2. 安裝 UIAutoDev

在終端機中執行以下命令:

pip install uiautodev

3. 啟動 UIAutoDev

安裝完成後,執行以下命令啟動工具:

python -m uiautodev

啟動後,瀏覽器將自動打開 UIAutoDev 的網頁介面。​

4. 連接裝置

  • Android:​啟用開發者選項並允許 USB 偵錯,使用 USB 或 Wi-Fi 連接裝置。
  • iOS:​啟動 WebDriverAgent(WDA)服務,並確保裝置與電腦在同一網路下。​

5. 使用工具進行 UI 元素定位

  • 在網頁介面中選擇已連接的裝置。
  • 點擊「刷新」按鈕,同步裝置當前畫面。
  • 使用滑鼠點選畫面中的控件,查看其屬性資訊,並在右側控件樹中進行導航。
  • 利用自動生成的 XPath 選擇器,快速編寫自動化腳本。

🧪 實際應用範例

可以先看DEMO

以下是一段使用 uiautomator2 與 UIAutoDev 結合的 Python 腳本範例:

import uiautomator2 as u2

# 連接到裝置
d = u2.connect()

# 啟動應用程式
d.app_start("com.example.app")

# 點擊指定的控件
d(resourceId="com.example.app:id/button").click()

# 輸入文字
d(resourceId="com.example.app:id/input").set_text("測試輸入")

# 關閉應用程式
d.app_stop("com.example.app")

透過 UIAutoDev 提供的控件屬性資訊,您可以輕鬆取得 resource-id 等屬性,快速編寫上述腳本。

參考資料

https://testerhome.com/topics/40069

Nuitka GUI 入門指南:Python 封裝成 exe,小白友善介面快速搞定

Nuitka GUI 入門指南:Python 封裝成 exe,小白友善介面快速搞定

Views: 136

當你在開發 Python 時,將程式轉換為可執行檔案(如 .exe)並提升執行效率是許多開發者關心的議題,Nuitka 是一款大家都推薦的 Python 編譯器,能夠將 Python 原始碼編譯為 C 語言,進而生成高效的可執行檔案​,今天來介紹 Nuitka 的安裝、封裝流程、靜態檔案,與相依套件的處理,以及常見問題與性能優化建議,讓即使是初學者也能輕鬆上手。​

1. 安裝與執行封裝

安裝 Nuitka

  1. 安裝 C++ 編譯器:​Nuitka 需要 C++ 編譯器來編譯生成的 C 程式碼。在 Windows 系統上,推薦安裝 MinGW64。
  2. 安裝 Nuitka:​使用 pip 安裝 Nuitka:

執行封裝

假設您的主程式為 main.py,可以使用以下命令將其封裝為可執行檔案:

nuitka --standalone --mingw64 --enable-plugins=tk-inter --disable-console --remove-output --onefile --output-dir=output main.py

上述命令的參數說明:

  • --standalone:​生成獨立的可執行檔案,包含所有相依套件。​
  • --mingw64:​使用 MinGW64 作為編譯器。
  • --enable-plugins=tk-inter:​啟用 tkinter 插件,根據實際使用的套件啟用相應插件。​
  • --disable-console:​隱藏執行時的控制台視窗,適用於 GUI 應用程式。​
  • --remove-output:​在編譯完成後移除中間產物。​
  • --output-dir=output:​指定輸出目錄為 output
  • –onefile:如果希望輸出為單一 .exe 檔案

如果是要用 Visual Studio C++ 來封裝的話可以改用

nuitka --standalone --msvc=latest --enable-plugins=tk-inter --disable-console --remove-output --output-dir=output main.py

2.靜態檔案的處理

在某些應用中,可能需要包含額外的靜態檔案(如圖片、配置檔案)。​Nuitka 提供了 --include-data-dir 參數來處理這些檔案:

此命令將當前目錄下的 static 資料夾包含到生成的可執行檔案中,並在執行時可正常訪問。

3.相依套件的處理

Nuitka 會自動檢測並包含大多數的相依套件。​然而,對於某些特殊的套件,可能需要手動啟用相應的插件。​例如,若您的程式使用了 PySide6,則需要在編譯時啟用該插件:

您可以使用 nuitka --plugin-list 命令查看所有可用的插件列表。

4.常見問題的處理

Nuitka 在首次編譯大型專案時可能需要較長時間。​為了加快編譯速度,可以安裝 ccache 來進行編譯快取。

由於 Nuitka 會將所有相依套件包含在內,生成的可執行檔案可能較大。​可以嘗試使用 --onefile 參數將所有內容打包成單一檔案,或使用壓縮工具對生成的檔案進行壓縮。

5.關於速度的優化

Nuitka 通過將 Python 程式編譯為 C 語言,通常能提升程式的執行效率。​然而,實際的性能提升取決於程式的結構和內容。​為了獲得最佳性能,建議:​

  • 優化原始碼:​確保程式碼中沒有不必要的計算和冗餘。​
  • 使用內建函數:​盡可能使用 Python 的內建函數,因為它們通常經過高度優化。​
  • 避免過度使用動態特性:​如 evalexec 等,這些可能影響編譯器的優化能力。

6.🌟使用 Nuitka GUI 友善介面

因為既指令很麻煩,推薦使用 Nuitka GUI,這是一款直覺且操作簡單的圖形介面工具。

Nuitka 官方 GUI 安裝:

開啟 Nuitka GUI:

或是用開源的 GUI

https://github.com/271374667/NuitkaGUI

參考資料

https://nuitka.net

PyAutoGUI-自動控制你的電腦

Views: 38

可以在 windows, mac, Linux 上使用,自動地透過滑鼠鍵盤來控制你的電腦畫面,還支援螢幕截圖

簡易使用方法

安裝 pyautogui

pip install pyautogui

使用 pyautogui

import pyautogui

螢幕截圖

pyautogui.screenshot('screenshot.png')

滑鼠控制

pyautogui.moveTo(100, 100, duration = 1.5) #用1.5秒移動到x=100,y=100的位置
pyautogui.dragTo(100, 100, duration=2, button='right') #用2秒按住滑鼠右鍵到x=100,y=100的位置
pyautogui.click(clicks=2, interval=0.5, button='right') #雙擊左鍵並且中途間隔0.5秒

鍵盤控制

pyautogui.keyDown('ctrl')
pyautogui.press('a')
pyautogui.keyUp('ctrl') #全選的功能鍵效果
pyautogui.hotkey('ctrl', 'shift', 'esc') #開啟工作管理員的快捷鍵

資源

PyAutoGUI 說明文件

PyAutoGUI 原始碼

中文說明檔

相關資源

用EXCEL製作專業的Python圖

用EXCEL製作專業的Python圖

Views: 31

啟用 Excel 中的 Python

在輸入框中,輸入 =py 然後按下 TAB ,就會進入下圖,儲存格前面變成有綠色框的PY,這時就可以輸入 Python 程式碼了

繪製企鵝圖的公式

# 台積電股價的小提琴圖
stock2303 = xl("A1:G218", headers=True)
sns.set_theme (font='SimHei', font_scale=0.8)
plt.figure(dpi=300)
plt.ylabel('量', rotation = 0, labelpad=15)
sns.violinplot(x="成交價", y="分量(張)", data = stock2303)

參考資料

資料探索與視覺化的優秀入門數據集,https://github.com/allisonhorst/palmerpenguins

各種 python 圖表的程式碼範例,https://seaborn.pydata.org/examples/index.html

將你的Python程式碼改成 web api

Views: 33

現在AI的時代,實在是離不開python,有時候想要快速的驗證程式設計,並且對外服務,給外部的人測試,這時候可以考慮把在 CLI 執行的 python code ,改成 web api,讓外部的人測試看看,改法如下

步驟 1: 安裝 Flask

pip install Flask

步驟 2 : 建立一個 Web APP

可以建立一個名為 webapi.py 的檔案,並且輸入以下程式碼,這樣就可以簡單地把 GraphRAG 的服務對外

from flask import Flask, request, jsonify
import subprocess
import shlex

app = Flask(__name__)

@app.route('/query', methods=['POST'])
def query():
    # 获取请求中的问题
    data = request.json
    question = data.get('question')
    
    if not question:
        return jsonify({'error': 'No question provided'}), 400
    
    # 构建 CLI 命令
    command = f"python -m graphrag.query --root ./ragtest --method local \"{question}\""
    # 安全地处理命令
    args = shlex.split(command)
    
    # 执行命令
    try:
        result = subprocess.run(args, check=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE, text=True)
        response = result.stdout
        # 假设输出中包含 "SUCCESS:" 和我们需要的答案
        if "SUCCESS:" in response:
            answer = response.split("SUCCESS:")[1].strip()  # 取得成功后的文本作为答案
            return jsonify({'answer': answer})
        else:
            return jsonify({'error': 'Failed to get a valid response from the CLI tool'}), 500
    except subprocess.CalledProcessError as e:
        return jsonify({'error': str(e)}), 500

if __name__ == '__main__':
    app.run(debug=True, port=5000)

步驟 3 : 開啟服務

python webapi.py

步驟 4 : 使用 API

curl -X POST http://localhost:5000/query -H "Content-Type: application/json" -d "{\"question\": \"新修正之勞工特別休假日數有多少?\"}"

延伸閱讀

隔離即高效:探索 Python 虛擬環境的專業實踐

Views: 12

我們常常在網路上安裝依賴 Python 的程式碼,但總是會有一推的衝突存在,Python 的虛擬環境(virtual environment)則是一個非常有用的工具,它可以在不同的專案間建立隔離的 Python 執行環境,可以確保不同專案的依賴庫互不干擾,讓 Python 的開發更加簡單、安全。以下將詳細介紹 Python 虛擬環境的概念、創建和使用方法。

虛擬環境的重要性

在沒有虛擬環境的情況下,Python 的庫和模組都會安裝在全局環境中。這會導致幾個問題:

  • 版本衝突:不同專案可能需要同一個庫的不同版本,全局安裝可能導致版本衝突。
  • 依賴混亂:隨著安裝的庫越來越多,全局環境可能變得難以管理和維護。

使用虛擬環境,每個專案都有自己獨立的環境,可以:

  • 隔離依賴:每個專案的依賴庫都獨立於其他專案,避免了版本和依賴衝突。
  • 易於管理:管理每個專案的依賴更為方便,升級或修改不會影響到其他專案。

如何創建和使用虛擬環境

1. 安裝虛擬環境

Python 3.3 以上版本已經內置了 venv 模組來創建虛擬環境。安裝新的虛擬環境非常簡單:

python3 -m venv myenv

這個命令會在當前目錄下創建一個名為 myenv 的資料夾,其中包含了獨立的 Python 執行環境。

2. 啟用虛擬環境

創建虛擬環境後,需要啟用它以使用:

Windows

.\myenv\Scripts\activate

Linux

source myenv/bin/activate

啟用虛擬環境後,你會在命令行前看到虛擬環境的名稱,這表明你現在在該虛擬環境中運行 Python。

3. 安裝和管理套件

在虛擬環境中,可以使用 pip 安裝所需的庫,而這些安裝只會影響當前的虛擬環境:

pip install -r requirements.txt

這個命令會在虛擬環境中安裝 Flask,而不會影響到其他環境或全局 Python 環境。

4. 退出虛擬環境

完成工作後,可以通過以下命令退出虛擬環境:

deactivate

這會恢復到全局 Python 環境。

參考資料

https://docs.python.org/zh-tw/3/tutorial/venv.html