Python 자동 작업 GUI 아티팩트——PyAutoGUI

PHPz
풀어 주다: 2023-04-11 22:13:08
앞으로
2079명이 탐색했습니다.

Python 자동 작업 GUI 아티팩트——PyAutoGUI

우리는 이전에 Python을 사용하여 브라우저에서 페이지 작업을 자동화하는 방법에 대해 설명했습니다. 어떤 방법을 사용하든 해당 작업은 페이지에서 요소를 찾아 수행됩니다.

오늘은 데스크탑에서 작업을 자동화하는 방법에 대해 이야기하겠습니다. 브라우저 페이지 자동화 작업과 유사하게 데스크탑 자동화 작업도 데스크탑에서 마우스 위치를 찾은 다음 위치된 위치에 따라 해당 작업을 수행해야 합니다.

GUI 제어 아티팩트

오늘의 주인공은 pyautogui입니다. pyautogui는 프로그램이 자동화된 테스트 목적을 달성하기 위해 일련의 마우스 및 키보드 작업을 자동으로 제어할 수 있게 해주는 순수 Python GUI 자동화 도구입니다.

이 모듈의 설치도 평소와 동일합니다.

  • pip3 install pyautogui

설치 후 바로 사용할 수 있습니다.

마우스 조작

마우스 움직임

가장 기본적인 데스크탑 조작은 마우스 조작입니다. 마우스의 움직임을 제어할 수 있습니다:

# 移动鼠标
pyautogui.moveTo(200,400,duration=2)
pyautogui.moveRel(200,500,duration=2)
로그인 후 복사

전체 데스크탑은 왼쪽 상단을 좌표축의 원점으로 하며, 모든 조작은 이 원점을 기준으로 작동 위치를 결정합니다.

첫 번째 코드 줄은 마우스를 지정된 픽셀(200,400) 위치로 이동시키고, 두 번째 코드 줄은 현재 지점을 기준으로 마우스를 오른쪽으로 200px, 아래쪽으로 400px 이동합니다.

두 코드 모두 공통 매개변수인 지속시간을 가집니다. 이 매개변수는 이동 시간, 즉 지정된 시간 내에 이동 작업이 완료되는 것을 나타내며 단위는 초입니다.

이 두 줄의 코드를 실행하고 화면 마우스의 변화를 관찰해보세요.

마우스 위치도 얻을 수 있습니다:

print(pyautogui.position())
로그인 후 복사

이것은 이해하기 쉽습니다. 이는 현재 화면에서 마우스의 좌표 위치를 얻는 것입니다. 이 코드 줄을 실행하면 다음과 같은 정보를 얻을 수 있습니다.

  • 점(x=400, y=900)

마우스 클릭

보통 우리 마우스는 좌우에 2개의 버튼이 있고 고급 마우스는 중앙에 버튼이 있습니다.

내 마우스에는 버튼이 두 개밖에 없고 가운데 버튼이 없습니다. 아아~

Python 자동 작업 GUI 아티팩트——PyAutoGUI

pyautogui에는 다음 세 개의 버튼 작업에 해당하는 처리가 있습니다.

# 鼠标点击,默认左键
pyautogui.click(100,100)
# 单击左键
pyautogui.click(100,100,button='left')
# 单击右键
pyautogui.click(100,300,button='right')
# 单击中间
pyautogui.click(100,300,button='middle')
로그인 후 복사

마우스 클릭, 버튼 매개변수가 지정되지 않은 경우 기본값은 왼쪽 키를 클릭하는 것입니다. 처음 두 매개변수는 클릭 좌표의 위치입니다.

이 코드를 실행하고 데스크톱에 어떤 일이 일어나는지 확인해 보세요.

클릭 작업 외에도 마우스에는 두 번 클릭 작업도 있습니다.

# 双击左键
pyautogui.doubleClick(10,10)
# 双击右键
pyautogui.rightClick(10,10)
# 双击中键
pyautogui.middleClick(10,10)
로그인 후 복사

작업 기능도 매우 간단합니다. 몇 번 더 살펴보세요!

프론트 엔드에 익숙한 친구들은 마우스 조작에 누르기와 떼기 과정이 있다고 즉시 생각할 수 있으며, 화면 조작에도 해당 컨트롤이 있습니다.

# 鼠标按下
pyautogui.mouseDown()
# 鼠标释放
pyautogui.mouseUp()
로그인 후 복사

마우스 끌기

마우스를 제어하여 지정된 좌표 위치 및 작동 시간 설정:

pyautogui.dragTo(100,300,duration=1)
로그인 후 복사

이 작동 효과는 이전 동작과 유사합니다.

이전 동작의 경험을 바탕으로 마우스를 다음 방향으로 드래그하기도 합니다.

pyautogui.dragRel(100,300,duration=4)
로그인 후 복사

마우스 스크롤

데스크톱 작업에서는 마우스를 위쪽 또는 아래쪽 위치로 스크롤해야 하는 경우가 있습니다. 스크롤 기능 제어 방법:

pyautogui.scroll(30000)
로그인 후 복사

매개변수는 위로 또는 아래로 스크롤할 단위 수를 나타내는 정수입니다. 이 단위는 운영 체제에 따라 다를 수 있습니다. 위로 스크롤하면 양의 정수를 전달하고, 아래로 스크롤하면 음의 정수를 전달합니다.

화면 처리

스크린샷 가져오기

먼저 시나리오를 가정해 보겠습니다. 지금 화면에서 빨간색 점을 찾고 싶은데 어떻게 하시겠습니까? 일반적인 접근 방식은 빨간색 점의 색상 값을 얻은 다음 찾을 때까지 화면의 점을 하나씩 비교하는 것입니다.

pyautogui는 이 세 가지 작업을 완료하는 세 가지 기능을 지원합니다.

im = pyautogui.screenshot()
im.save('screenshot.png')
rgb = im.getpixel((100, 500))
print(rgb)
match = pyautogui.pixelMatchesColor(500,500,(12,120,400))
print(match)
로그인 후 복사

첫 번째는 베개 이미지 개체를 반환할 수 있는 스크린샷 기능을 가져오는 것입니다. 두 번째는 스크린샷에서 지정된 좌표 지점의 색상을 가져오고 세 번째는 가져오는 것입니다. 지정된 좌표점의 색상 대상의 색상과 비교하여 Boolean 값을 반환합니다.

요구 사항을 다시 업그레이드해 보겠습니다.

이제 화면에서 엣지 브라우저 아이콘을 찾고 싶은데 어떻게 하시겠습니까?

일반적인 접근 방식은 먼저 엣지 브라우저 아이콘이 녹색인지 파란색인지, 뚱뚱하거나 얇은지 파악하는 것입니다. 그런 다음 대상 아이콘과 동일한 아이콘을 찾을 때까지 화면의 아이콘을 일치시키고 결과를 얻습니다.

그래서 우리가 만든 코드는 다음과 같습니다.

# 图像识别(一个)
oneLocation = pyautogui.locateOnScreen('1.png')
print(oneLocation)
# 图像识别(多个)
allLocation = pyautogui.locateAllOnScreen('1.png')
print(list(allLocation))
로그인 후 복사

바탕화면에 있는 애플리케이션의 아이콘을 캡쳐해서 사진으로 저장한 뒤, 위의 코드 라인을 이용해 식별에 성공하면 됩니다. 다음과 유사한 결과가 반환됩니다.

Box(left=20, top=89, width=33, height=34)
[Box(left=20, top=89, width=33, height=34)]
로그인 후 복사

사진이 바탕화면에 있는 위치입니다. 사진을 찾을 수 없으면 None이 반환됩니다.

키보드 입력

키보드 기능

키보드 입력에는 일반적으로 사용되는 기능이 다음과 같습니다.

  • keyDown():模拟按键按下
  • keyUP():模拟按键松开
  • press():模拟一次按键过程,即 keyDown 和 keyUP 的组合
  • typewrite():模拟键盘输出内容

举个例子,大家平时输入感叹号(!)是怎么操作键盘的?

按住 shift 按键,然后再按住 1 按键,就可以了。用 pyautogui 控制就是:

pyautogui.keyDown('shift')
pyautogui.press('1')
pyautogui.keyUp('shift')
로그인 후 복사

运行上面的代码,如果你的鼠标是放在编辑框中,你会得到一个感叹号!

我们还可以直接输出内容:

pyautogui.typewrite('python', 1)
로그인 후 복사

第一个参数是输出的内容,第二个参数是间隔时间,单位是秒。

运行上面代码,你的编辑器里面就会每隔1秒钟按顺序输出 python 的6个字母。

特殊符号

有时我们需要输入键盘的一些特殊的符号按键,比如 换行、方向键等,这些有相对应的键盘字符串表示:

pyautogui.typewrite(['p','y','t','h','o','n','enter'])
로그인 후 복사

运行上面代码,编辑器里面就会输出 python 之后换行。

其他特殊按键对应的字符串请参考官方说明。

快捷键

如果我要复制一个内容,大部分情况下会使用快键键 ctrl + c,按照上面讲的,我们应该这么实现:

pyautogui.keyDown('ctrl')
pyautogui.keyDown('c')
pyautogui.keyUp('c')
pyautogui.keyUp('ctrl')
로그인 후 복사

这样写起来很麻烦,而且需要掌控按键的按下和释放的顺序。

pyautogui 为我们提供了一个快捷的函数:

pyautogui.hotkey('ctrl','c')
로그인 후 복사

实现的效果和上面的4行代码相同。

信息框

当你在模拟一个桌面操作的时候,如果有分支操作需要根据实际情况来判断,你是不是需要有一个地方可以让你选择走哪个分支?

pyautogui 贴心地考虑到了这种情况,你可以通过弹出一个选择框来中断当前的操作,选择操作分支。

way = pyautogui.confirm('领导,该走哪条路?', buttons=['农村路', '水路', '陆路'])
print(way)
로그인 후 복사

这里就是我们 HTML 页面的 confirm 选择框,选择了选项之后,我们可以获取到选择的选项,然后基于这个选项做判断,进入相应的操作分支。

除了选择确认框之外,还有其他一些提示信息框:

# 警告框
alert = pyautogui.alert(text='警告!敌军来袭!', title='警告框')
print(alert)
# 密码框
password = pyautogui.password('请输入密码')
print(password)
# 普通输入框
input = pyautogui.prompt('请输入指令:')
print(input)
로그인 후 복사

总结

pyautogui 的基本知识就给大家介绍到这里,这个 python 模块的功能十分强大,函数都非常简单,对 python 初学者比较友好。学了这些基本知识之后,你可以运用这些基本知识的组合,去实现一些有趣的桌面自动化操作,快去尝试一把吧!

知识在于分享,转发这篇文章,让更多的人看到~

위 내용은 Python 자동 작업 GUI 아티팩트——PyAutoGUI의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:51cto.com
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿