第20章:用GUI自动化控制键盘和鼠标(笔记)

20.1:安装pyautogui模块

pip install --user pyautogui

 20.2:在macOS上设置无障碍应用程序

20.3:走对路

20.3.1暂停和自动妨故障装置

20.3.2:通过注销关闭所有程序

20.4:控制鼠标指针

import pyautogui

print(pyautogui.size())

 size()函数:返回两个整数的元组,包含屏幕的宽度和高度的像素数

20.4.1:移动鼠标指针

import pyautogui

pyautogui.moveTo(100, 100, duration=0.25)
pyautogui.move(100, 0, duration=0.25)

 moveTo()函数:将鼠标立即移动到屏幕指定位置,x、y坐标分别是参数1和参数2,参数duration是可选的指定了移动到目标所需的秒数

move()函数:将鼠标移动相对当前的位置参数和上诉一样

20.4.2:获取鼠标指针位置

import pyautogui

print(pyautogui.position())

 position()函数:可以确定鼠标指针当前位置,它将返回x、y坐标的元组

20.5:控制鼠标交互

20.5.1:单击鼠标

import pyautogui

pyautogui.click(10, 5, button='left')

 click()函数:鼠标单击事件,默认情况下使用鼠标左键,单击鼠标指针当前位置。也可以传入x、y作为参数1和参数2指定单击位置,想指定鼠标按键就加入button关键字参数值分别为left、middle、right

20.5.2:拖动鼠标

import pyautogui, time

time.sleep(5)
pyautogui.click()
distance = 300
change = 20
while distance > 0:
    pyautogui.drag(distance, 0, duration=0.2)
    distance = distance - change
    pyautogui.drag(0, distance, duration=0.2)
    pyautogui.drag(-distance, 0, duration=0.2)
    distance = distance - change
    pyautogui.drag(0, -distance, duration=0.2)

 dragTo()和drag()函数:将鼠标指针拖动到一个新位置,第一个是拖动到相应的位置,第二个是拖动到与当前相应的位置

20.5.3:滚动鼠标

import pyautogui

pyautogui.scroll(200)

 scroll()函数:提供一个整型参数,说明向上或向下滚动多少单位

20.6:规划鼠标运动

import pyautogui

pyautogui.mouseInfo()

 mouseInfo()函数:需要在交互环境中调用,会启动一个程序,程序提供了关于鼠标和鼠标所在位置的信息

20.7:处理屏幕

20.7.1:获取屏幕快照

import pyautogui

pyautogui.screenshot()

 screenshot()函数:会把当前屏幕截取下来,会返回一个Image对象

20.7.2:分析屏幕快照

import pyautogui

print(pyautogui.pixel(0, 0))
print(pyautogui.pixelMatchesColor(20, 200, (130, 135, 144)))

 pixel()函数:获取屏幕上某一点的像素的rgb颜色值。

pixelMatchesColor()函数:判断屏幕上给定的坐标像素与给定的颜色是否匹配。

20.8:图像识别

import pyautogui

print(pyautogui.locateOnScreen('submit.png'))
print(pyautogui.locateAllOnScreen('submit.png'))

 locateOnScreen()函数:判断图像是否出现在屏幕上,返回图像所在处的坐标,找不到则异常

locateAllOnScreen()函数:判断图像是否出现在屏幕上(多处),返回一个Generator对象传递给list()返回图像位置的元组

20.9:获取窗口信息

20.9.1:获取活动窗口

import pyautogui

fw = pyautogui.getActiveWindow()
print(fw.title)
print(fw.size)
print(fw.left)
print(fw.topleft)
print(fw.area)

 getActiveWindow()函数获取活动窗口对象它具有的属性:

left、right、top、bottom:表示窗口边的坐标

topleft、topright、bottomleft、bottomright:表示窗口角的坐标

midleft、midright:表示窗口边中间的坐标

width、height:表示窗口的一个维度,一像素为单位

size:表示窗口的宽度与高度

area:表示窗口的面积

center:表示窗口的中心坐标

centerx、centery:表示窗口的中心x或y的坐标

box:表示窗口(左侧、顶部、宽度、高度)

title:表示窗口的标题文本

20.9.2:获取窗口的其他方法

getAllWindows():返回屏幕上所有可见窗口的Windows对象列表

getWindowsAt():返回所有包含点的可见窗口的Windows对象列表

getWindowsWithTitle():返回所有在标题中包含字符串的可见窗口的Windows对象列表

getActiveWindow():返回当前活动窗口的Windows对象

getAllTitles():返回所有可见窗口的字符串列表

20.9.3:操纵窗口

import pyautogui

fw = pyautogui.getActiveWindow()
fw.isMaximized
fw.isMinimized
fw.isActive
fw.maximize()
fw.restore()
fw.minimize()
fw.activate()
fw.close()

 isMaximized:是否是最大化
isMinimized:是否是最小化
isActive:是否是活动窗口
maximize():最大化窗口
restore():还原到以前的大小和位置
minimize():最小化窗口
activate():指定为活动窗口
close():关闭一个窗口

20.10:控制键盘

20.10.1:通过键盘发送一个字符串

import pyautogui

pyautogui.click(100, 200)
pyautogui.write('hello world!', 0.25)

 write()函数:将向窗口发送文本,第二个参数可选择传入,在每个字符之间添加时间暂停,默认立即输入完整的字符

20.10.2:键名

import pyautogui

pyautogui.click(100, 200)
pyautogui.write(['hello world!', 'left'], 0.25)

 键盘按键字符串差不多就是单引号加键位名比如:'left'

20.10.3:按下和释放键盘按键

import pyautogui

pyautogui.click(100, 200)
pyautogui.keyDown('shift')
pyautogui.press('4')
pyautogui.keyUp('shift')

 keyDown()函数:表示键盘按下

keyUp()函数:表示按键释放

press()函数:模拟完整的按键事件

20.10.4:快捷键组合

import pyautogui

pyautogui.hotkey('ctrl', 'c')

 hotkey()函数:接收多个键字符串参数,按顺序按下,在按相反的顺序释放

20.11:设置GUI自动化脚本

import pyautogui

pyautogui.sleep(3)
pyautogui.countdown(10)

 pyautogui.sleep()和time.sleep()作用相同

pyautogui.countdown():输入倒计时的数字,倒计时函数

20.12:复习pyautogui的函数

20.13:项目:自动填表程序

import pyautogui, time

formData = [{'***'}{'***'}{'***'}]

pyautogui.PAUSE = 0.5
print('is loaded')

for person in formData:
    print('>>>s-SECOND *** <<<')
    time.sleep(5)
    print('Entering %s' % person['name'])
    pyautogui.write(['\t', '\t'])
    pyautogui.write(person['name'] + '\t')
    pyautogui.write(person['fear'] + '\t')
    
    if person['source'] == 'wand':
        pyautogui.write(['down', '\t'], 0.5)
    elif person['source'] == 'amulet':
        pyautogui.write(['down','down', '\t'], 0.5)
    elif person['source'] == 'crystal ball':
        pyautogui.write(['down','down','down', '\t'], 0.5)
    elif person['source'] == 'money':
        pyautogui.write(['down', 'down','down','down','\t'], 0.5)
    
    if person['robocop'] == 1:
        pyautogui.write([' ', '\t'], 0.5)
    elif person['robocop'] == 2:
        pyautogui.write(['right', '\t'], 0.5)
    elif person['robocop'] == 3:
        pyautogui.write(['right', 'right', '\t'], 0.5)
    elif person['robocop'] == 4:
        pyautogui.write(['right',  'right', 'right', '\t'], 0.5)
    elif person['robocop'] == 5:
        pyautogui.write(['right',  'right', 'right', 'right', '\t'], 0.5)
    
    pyautogui.write(person['comments'] + '\t')
    time.sleep(0.5)
    pyautogui.press('enter')
    time.sleep(5)
    
    pyautogui.click(submitAnotherLink[0], submitAnotherLink[1])

20.14:显示消息框

import pyautogui

pyautogui.alert('This is a message', 'Important')
pyautogui.confirm('Do you want to continue?')
pyautogui.prompt("what is your cat's name?")
pyautogui.password('What is the password?')

pyautogui.alert():显示文本,并有一个确定按钮

pyautogui.confirm():显示文本,并有确定和取消按钮,返回'Cancel'和'OK'

pyautogui.prompt():显示文本,并有一个文本字段供用户输入,以字符串返回

pyautogui.password():与prompt()相同,但会显示星号

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值