91欧美超碰AV自拍|国产成年人性爱视频免费看|亚洲 日韩 欧美一厂二区入|人人看人人爽人人操aV|丝袜美腿视频一区二区在线看|人人操人人爽人人爱|婷婷五月天超碰|97色色欧美亚州A√|另类A√无码精品一级av|欧美特级日韩特级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

使用PyAutoGUI包對(duì)各種鼠標(biāo)點(diǎn)擊之類的機(jī)械重復(fù)操作進(jìn)行自動(dòng)執(zhí)行

Linux愛(ài)好者 ? 來(lái)源:簡(jiǎn)說(shuō)Python ? 作者:簡(jiǎn)說(shuō)Python ? 2021-06-15 16:18 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

一、背景我們經(jīng)常遇到需要進(jìn)行大量重復(fù)操作的時(shí)候,比如網(wǎng)頁(yè)上填表,對(duì) web 版本 OA 進(jìn)行操作,自動(dòng)化測(cè)試或者給新系統(tǒng)首次添加數(shù)據(jù)等。這些操作的特點(diǎn)往往是:數(shù)據(jù)同構(gòu),大多是已經(jīng)有了的結(jié)構(gòu)化數(shù)據(jù);操作比較呆板,都是同一個(gè)流程的點(diǎn)擊、輸入;數(shù)據(jù)量大,極大消耗操作人精力。

那么能不能自動(dòng)化呢?

二、自動(dòng)化的方案如果你在 web 上進(jìn)行操作, Python 的 Selenium 可以滿足要求。如果需要對(duì) GUI 界面進(jìn)行操作,你恐怕得試驗(yàn)下“按鍵精靈”能不能滿足要求。對(duì)新系統(tǒng)添加初始數(shù)據(jù),SQL 導(dǎo)出導(dǎo)入是最高效的方式,不過(guò)可能需要進(jìn)行一些較復(fù)雜的處理。

曾經(jīng)多次遇到要求一條條手動(dòng)輸入舊數(shù)據(jù)的系統(tǒng)升級(jí)活動(dòng)。

但以上都存在一些問(wèn)題, Selenium 比較復(fù)雜,按鍵精靈功能上不太完善, SQL 需要一定的知識(shí)基礎(chǔ)。那么這里推薦一個(gè)更好的解決方案:PyAutoGUI 。

其實(shí) PyAutoGUI 最主要好處就是比較簡(jiǎn)單,應(yīng)急使用的話可以很快構(gòu)建一個(gè)可用的自動(dòng)化操作腳本。畢竟,數(shù)據(jù)處理任務(wù)本來(lái)就比較急迫,沒(méi)有時(shí)間使用復(fù)雜知識(shí),來(lái)構(gòu)建一個(gè)完善的腳本。

三、思路和知識(shí)點(diǎn)現(xiàn)在哈來(lái)說(shuō)一下基本思路與相關(guān)知識(shí)點(diǎn)

PyAutoGUI 就是模擬鍵盤(pán)、鼠標(biāo)在界面上進(jìn)行操作。

這里只使用它的 click 功能來(lái)模擬鼠標(biāo)點(diǎn)擊。

為了獲取需要點(diǎn)擊的位置,設(shè)計(jì)了一個(gè)鼠標(biāo)坐標(biāo)獲取的程序。

ASCII 碼的輸入比較簡(jiǎn)單。再解決漢字輸入問(wèn)題,就使得系統(tǒng)基本可用了。

本文以在 web 界面批量新增數(shù)據(jù)記錄為例,講解如何自動(dòng)化操作。這個(gè)例子只是演示之用,非常簡(jiǎn)單,大家自行理解、遷移。

四、操作步驟4.1 初識(shí) PyAutoGUI

簡(jiǎn)單地說(shuō), PyAutoGUI 就是模擬鍵盤(pán)、鼠標(biāo)在界面上進(jìn)行操作的包。安裝時(shí)直接使用如下語(yǔ)句:pip install pyautogui即可。

編寫(xiě)一個(gè)簡(jiǎn)單的測(cè)試程序:

import pyautogui as pag

pag.PAUSE = 1.5

pag.click(63,191)

以上程序?qū)霂?kù),定義了每步驟的暫停時(shí)間 1.5 秒(用來(lái)留給操作時(shí)間),然后在屏幕左起 63 像素,上起 191 像素這個(gè)點(diǎn)上點(diǎn)擊了鼠標(biāo)。

4.2 坐標(biāo)系

PyAutoGUI 默認(rèn)的坐標(biāo)系從屏幕左上角開(kāi)始,x 軸向右增大,y 軸向下增大。所以顯示器上每個(gè)點(diǎn)都有自己的位置。

引申一下,當(dāng)知道界面上每個(gè)按鈕的位置時(shí),點(diǎn)擊這些點(diǎn),就是執(zhí)行相應(yīng)的操作了。

當(dāng)然,這一切的前提是界面不變。大多數(shù)應(yīng)用的界面、按鈕位置不會(huì)變來(lái)變?nèi)ァH绻阌羞@方面需求,可以參考下 locateOnScreen() 函數(shù)。這個(gè)函數(shù)根據(jù)你提供的圖片,在屏幕上找到像素匹配的地方。這樣就不怕按鈕動(dòng)來(lái)動(dòng)去了。

為了獲取屏幕的坐標(biāo)系,寫(xiě)了一個(gè)簡(jiǎn)單的程序,用來(lái)獲取鼠標(biāo)在屏幕上的坐標(biāo)。大家可以自行下載運(yùn)行。

import pyautogui as pag

import os

try:

while True:

os.system(‘cls’)

a = ‘%4d,%4d’%pag.position()

print(a)

except Exception as e:

print(e)

運(yùn)行以上程序,移動(dòng)鼠標(biāo)到各個(gè)按鈕上,就可以看到相應(yīng)的坐標(biāo)。

4.3 點(diǎn)擊

PyAutoGUI 的點(diǎn)擊很簡(jiǎn)單:

pyautogui.click(x=None, y=None, clicks=1, interval=0.0, button=‘left’, duration=0.0)

其中x,y是坐標(biāo),clicks 是點(diǎn)擊次數(shù),interval 是點(diǎn)擊間隔,button 指代三個(gè)鼠標(biāo)按鈕的哪一個(gè),duiation 是點(diǎn)擊之間的間隔。

寫(xiě)如下程序,來(lái)進(jìn)行任務(wù)、時(shí)間和新建按鈕之間的跳轉(zhuǎn)。

pag.click(63,191)

pag.click(328,191)

pag.click(384,461)

pag.click(374,191)

4.4 輸入

輸入 ASCII 字符和鍵盤(pán)擊鍵、熱鍵分別如下:

輸入 ASCII 字符串是typewrite(message=‘test message.’,interval=0.5)

擊鍵是press(‘esc’)

按下是KeyDown(‘ctrl’)

松開(kāi)是KeyUp(‘ctrl’)

組合鍵是hotkey(‘ctrl’,‘v’)。

至于漢字,稍微復(fù)雜點(diǎn)。

4.5 漢字輸入

涉及漢字,無(wú)法用 ASCII 方案解決,需要導(dǎo)入包 pyperclip ,這個(gè)包封裝了系統(tǒng)剪貼板,大家知道怎么回事了吧。

import pyperclip

#以下讀入內(nèi)容,就是把內(nèi)容存入剪貼板。

pyperclip.copy(‘需要輸入的漢字’)

#以下輸出內(nèi)容,就是粘貼。

pag.hotkey(‘ctrl’,‘v’)

其實(shí)就是用 pyperclip 模擬拷貝,用熱鍵 Ctrl+v 粘貼,實(shí)現(xiàn)了非 ASCII 字符的輸入。

4.6 集成起來(lái)

下面,把整個(gè)程序集成起來(lái)看:

import pyautogui as pag

import pyperclip

pag.PAUSE = 1.5

pag.FAILSAFE = True

to = [‘測(cè)試任務(wù)1’,‘測(cè)試任務(wù)2’,‘測(cè)試任務(wù)3’,‘測(cè)試任務(wù)4’,‘測(cè)試任務(wù)5’,

‘測(cè)試任務(wù)6’,‘測(cè)試任務(wù)7’,‘測(cè)試任務(wù)8’,‘測(cè)試任務(wù)9’,‘測(cè)試任務(wù)10’]

for t in to:

pag.click(63,191)

pyperclip.copy(t)

pag.hotkey(‘ctrl’,‘v’)

pag.click(328,191)

pag.click(384,461)

pag.click(374,191)

以上程序,根據(jù) to 列表內(nèi)容,把操作分解為點(diǎn)擊和粘貼,實(shí)現(xiàn)了自動(dòng)化操作的目的。大部分編碼都很好理解,能跟鼠標(biāo)操作一一對(duì)應(yīng)起來(lái)。可能存在難度的是數(shù)據(jù)源的問(wèn)題,總不能把所有數(shù)據(jù)都寫(xiě)入程序吧?

五、數(shù)據(jù)源相較于復(fù)雜的現(xiàn)實(shí)數(shù)據(jù)源,最好的方式就是把數(shù)據(jù)轉(zhuǎn)成 csv 文件。這樣許多 Excel 都可以另存成這個(gè)文件,其本身又是基于文本的,可讀可寫(xiě),比較方便。其他諸如 SQL 數(shù)據(jù)庫(kù)、 XML 數(shù)據(jù)也可以導(dǎo)出轉(zhuǎn)換為 csv 文件。

假設(shè)現(xiàn)在有了 csv 格式數(shù)據(jù)源 data.csv ,需要這樣操作。

to = []

with open(‘data.csv’)as f:

lines = f.readlines()

for line in lines:

to.append(tuple(line.split(‘,’)))

以上代碼比較簡(jiǎn)單,把 csv 中存成的數(shù)據(jù)存儲(chǔ)到 to 這個(gè)數(shù)組里,每行數(shù)據(jù)都是一個(gè)元組,調(diào)用的時(shí)候,如4.6部分代碼所示,使用 for 循環(huán)加上元組下標(biāo)即可。

六、總結(jié)

本文使用 PyAutoGUI 包,對(duì)各種鼠標(biāo)點(diǎn)擊、輸入之類的機(jī)械重復(fù)操作進(jìn)行自動(dòng)執(zhí)行,可大幅提高工作效率。這里只使用了 click 功能和 pyperclip 包的 copy 功能。主要是為了簡(jiǎn)化編程,讓大家在緊張和繁瑣的操作中,快速編寫(xiě)一個(gè)自動(dòng)化執(zhí)行的小腳本。

編輯:jq

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 數(shù)據(jù)存儲(chǔ)

    關(guān)注

    5

    文章

    1025

    瀏覽量

    52955
  • GUI
    GUI
    +關(guān)注

    關(guān)注

    3

    文章

    697

    瀏覽量

    43486
  • python
    +關(guān)注

    關(guān)注

    57

    文章

    4877

    瀏覽量

    90076

原文標(biāo)題:解放雙手,利用 PyAutoGUI 快速構(gòu)建自動(dòng)化操作腳本

文章出處:【微信號(hào):LinuxHub,微信公眾號(hào):Linux愛(ài)好者】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    初識(shí)ros2 功能建立與可執(zhí)行文件的配置

    本文介紹了ROS2程序的兩種啟動(dòng)方式:直接運(yùn)行可執(zhí)行文件(ros2 run)和使用啟動(dòng)文件(ros2 launch)。重點(diǎn)講解了Python軟件的結(jié)構(gòu),包括package.xml、setup.py
    的頭像 發(fā)表于 01-22 13:41 ?248次閱讀

    如何使用wireshark進(jìn)行遠(yuǎn)程抓

    一、概述 通常我們使用wireshark進(jìn)行分析的時(shí)候,在遠(yuǎn)端設(shè)備抓取一部分?jǐn)?shù)據(jù)后,再回傳到本地,然后使用wireshark進(jìn)行分析。這種操作
    的頭像 發(fā)表于 01-16 16:05 ?1049次閱讀
    如何使用wireshark<b class='flag-5'>進(jìn)行</b>遠(yuǎn)程抓<b class='flag-5'>包</b>

    榮耀時(shí)刻 | 鴻道Intewell新型工業(yè)操作系統(tǒng)斬獲機(jī)械工業(yè)領(lǐng)航獎(jiǎng)

    憑借突出的智能化技術(shù)優(yōu)勢(shì)、優(yōu)異的性能與豐富的行業(yè)應(yīng)用實(shí)踐,鴻道Intewell新型工業(yè)操作系統(tǒng)與西門(mén)子、羅克韋爾自動(dòng)化、施耐德電氣等行業(yè)領(lǐng)軍企業(yè)一同榮獲“機(jī)械工業(yè)領(lǐng)航獎(jiǎng)”,這一成果充分體現(xiàn)了鴻道Intewell新型工業(yè)
    的頭像 發(fā)表于 10-11 16:23 ?627次閱讀
    榮耀時(shí)刻 | 鴻道Intewell新型工業(yè)<b class='flag-5'>操作</b>系統(tǒng)斬獲<b class='flag-5'>機(jī)械</b>工業(yè)領(lǐng)航獎(jiǎng)

    新手必看:電池氣密性檢測(cè)儀操作入門(mén)指南-岳信儀器

    對(duì)于剛接觸電池氣密性檢測(cè)儀的新手來(lái)說(shuō),了解其操作方法至關(guān)重要。下面就為大家詳細(xì)介紹電池氣密性檢測(cè)儀的操作入門(mén)知識(shí)。(1)操作前準(zhǔn)備在開(kāi)啟
    的頭像 發(fā)表于 09-12 11:39 ?689次閱讀
    新手必看:電池<b class='flag-5'>包</b>氣密性檢測(cè)儀<b class='flag-5'>操作</b>入門(mén)指南-岳信儀器

    電競(jìng)鼠標(biāo)微動(dòng)開(kāi)關(guān):電容讓點(diǎn)擊響應(yīng)快過(guò) 0.1 秒的 “瞬時(shí)能量站”

    在電競(jìng)領(lǐng)域,鼠標(biāo)的響應(yīng)速度往往是決定勝負(fù)的關(guān)鍵因素之一。傳統(tǒng)機(jī)械式微動(dòng)開(kāi)關(guān)雖然技術(shù)成熟,但受限于物理結(jié)構(gòu),其響應(yīng)時(shí)間通常在5-10毫秒之間,且存在金屬氧化、觸點(diǎn)磨損等問(wèn)題。而近年來(lái)興起的電容式
    的頭像 發(fā)表于 08-22 10:27 ?1348次閱讀

    重復(fù)執(zhí)行 Ctrl-&gt;Bulk 傳輸時(shí),出現(xiàn) USBD_STATUS_INVALID_PARAMETER 錯(cuò)誤,怎么解決?

    問(wèn).1重復(fù)執(zhí)行 Ctrl->Bulk 傳輸時(shí),出現(xiàn) USBD_STATUS_INVALID_PARAMETER 錯(cuò)誤。 ·USBD_STATUS_CANCEL 發(fā)生
    發(fā)表于 08-14 06:39

    華秋DFM軟件丨操作教程——自定義快捷鍵篇

    進(jìn)入?!镜诙健孔远x設(shè)置快捷鍵的操作流程: 雙擊要設(shè)置項(xiàng)目對(duì)應(yīng)的快捷鍵欄 ,彈出操作框后, 直接在鍵盤(pán)上按出需要更改或新增的快捷鍵組合 ,點(diǎn)擊確認(rèn)即可。注:若設(shè)置了重復(fù)的快捷鍵,系統(tǒng)
    發(fā)表于 08-13 16:29

    協(xié)作機(jī)械臂產(chǎn)品介紹

    多元需求比鄰星協(xié)作機(jī)械臂擁有出色的負(fù)載表現(xiàn),別看其外觀設(shè)計(jì)精巧,卻能輕松承載較重的物品 。在工業(yè)生產(chǎn)中,無(wú)論是搬運(yùn)大型零部件,還是在精密電子制造環(huán)節(jié)中對(duì)微小元器件進(jìn)行精準(zhǔn)操作,它都能穩(wěn)定運(yùn)行,
    發(fā)表于 08-07 17:20 ?0次下載

    玉林在線自動(dòng)測(cè)寬儀 自動(dòng)化產(chǎn)線升級(jí)

    格,讓各種寬度的帶均能方便快速檢測(cè)。 分析與優(yōu)化 可將測(cè)量數(shù)據(jù)傳輸?shù)诫娔X上進(jìn)行存儲(chǔ),亦可配備工控機(jī)與測(cè)控軟件,進(jìn)行自動(dòng)化分析存儲(chǔ),方便工作
    發(fā)表于 07-23 15:23

    自動(dòng)膠機(jī)遠(yuǎn)程監(jiān)控物聯(lián)網(wǎng)解決方案

    在現(xiàn)代制造業(yè)中,自動(dòng)膠機(jī)廣泛應(yīng)用于電子、汽車、電池等眾多行業(yè),承擔(dān)著產(chǎn)品膠、封裝等關(guān)鍵工序。隨著企業(yè)生產(chǎn)規(guī)模的擴(kuò)大和智能化轉(zhuǎn)型的需求,對(duì)自動(dòng)
    的頭像 發(fā)表于 06-07 14:02 ?845次閱讀

    菜單的使用:Menu是菜單接口,一般用于鼠標(biāo)右鍵彈窗、點(diǎn)擊彈窗等

    菜單的使用 Menu是菜單接口,一般用于鼠標(biāo)右鍵彈窗、點(diǎn)擊彈窗等。具體用法請(qǐng)參考Menu控制。 創(chuàng)建默認(rèn)樣式的菜單 菜單需要調(diào)用bindMenu接口來(lái)實(shí)現(xiàn)。bindMenu響應(yīng)綁定組件的點(diǎn)擊
    發(fā)表于 04-30 07:14

    KaihongOS操作系統(tǒng):開(kāi)發(fā)環(huán)境搭建

    自動(dòng)進(jìn)行開(kāi)發(fā)環(huán)境診斷。如果診斷結(jié)果如下圖所示, 表示 ohpm 沒(méi)有安裝。 處理方法: 在 Node.js 安裝路徑下啟動(dòng) cmd 命令行工具。 執(zhí)行以下命令切換 NPM 源。 npm config
    發(fā)表于 04-23 07:27

    CPU的各種指令和執(zhí)行流程

    在集成電路設(shè)計(jì)中,CPU的指令是指計(jì)算機(jī)中央處理單元(CPU)用來(lái)執(zhí)行計(jì)算任務(wù)的基本操作指令集。這些指令是CPU能夠理解并執(zhí)行的二進(jìn)制代碼,它們?cè)谟?jì)算機(jī)內(nèi)部由硬件控制并按順序執(zhí)行,從而
    的頭像 發(fā)表于 04-18 11:24 ?2646次閱讀

    Spectrum數(shù)字化儀卡將海豚聲吶點(diǎn)擊轉(zhuǎn)為鼠標(biāo)點(diǎn)擊

    ,利用15個(gè)水聽(tīng)器組成的陣列來(lái)捕捉海豚發(fā)出的聲吶點(diǎn)擊信號(hào),并通過(guò)Spectrum 儀器提供的16通道數(shù)字化儀系統(tǒng)進(jìn)行采集。數(shù)據(jù)使用定制化 AI 程序進(jìn)行處理,以便通過(guò)獲取的不同信號(hào)鎖定海豚的位置。2025年底該實(shí)驗(yàn)將進(jìn)入第二階段
    的頭像 發(fā)表于 04-09 15:48 ?532次閱讀
    Spectrum數(shù)字化儀卡將海豚聲吶<b class='flag-5'>點(diǎn)擊</b>轉(zhuǎn)為<b class='flag-5'>鼠標(biāo)點(diǎn)擊</b>

    基于Nordic nRF52840無(wú)線鍵盤(pán)、鼠標(biāo)物聯(lián)網(wǎng)解決方案

    :無(wú)線鍵盤(pán)鼠標(biāo)方案適用于辦公室環(huán)境,員工可以在辦公桌上自由操作計(jì)算機(jī),無(wú)需受到有線連接的限制。 2、程控制:在會(huì)議室或演講場(chǎng)合,無(wú)線鍵盤(pán)鼠標(biāo)方案可以作為遠(yuǎn)程控制工具,方便演講者或主持人進(jìn)行
    發(fā)表于 03-25 17:44