还是在自动化上面的应用,对于web的测试可以使用selenium来获取元素,进行按键控制或者文字输入,模拟用户操作实现自动化。可是对于非web的win桌面应用,我们就没办法了,这时候就需要向按键精灵那样,去查找对应的位置进行点击了。
pip install pyautogui
1.鼠标控制
移动到对应的坐标,然后点击
import pyautogui
# 2秒钟鼠标移动到坐标为100,100的位置
pyautogui.moveTo(x=100, y=100, duration=2)
# 鼠标左击一次
pyautogui.click()
获取屏幕分辨率,鼠标当前位置
# 获取当前屏幕分辨率
screen_w, screen_h = pyautogui.size()
# 获取当前鼠标位置
current_X, current_y = pyautogui.position()
移动到相对位置
#2秒钟鼠标移动到现在鼠标所在位置的相对移动 ,向右移动10,向下移动10
pyautogui.moveRel(xOffset=10, yOffset=10, duration=2)
鼠标单击、双击、右击、中击
# 鼠标左击一次
pyautogui.click()
# 这个函数还有很多参数,可是实现单击、双击、右击、中击,只需要改对应的参数就行
# pyautogui.click(x=None, y=None, clicks=1, interval=0.0, button='left', duration=0.0, tween=pyautogui.linear)
# 不过我们一般不使用pyautogui.click()去弄各种击,因为记不住,就使用一下封装好的函数
# 鼠标双击
pyautogui.doubleClick()
# 鼠标置3击
pyautogui.tripleClick()
# 右击
pyautogui.rightClick()
# 中击
pyautogui.middleClick()
# 鼠标当前位置滚轮滚动
pyautogui.scroll()
鼠标拖拽
#鼠标拖拽
pyautogui.dragTo(x=427, y=535, duration=3,button='left')
#鼠标相对拖拽
pyautogui.dragRel(xOffset=100,yOffset=100,duration=,button='left',mouseDownUp=False)
#鼠标移动到x=1796, y=778位置按下
pyautogui.mouseDown(x=1796, y=778, button='left')
#鼠标移动到x=2745, y=778位置松开(与mouseDown组合使用选中)
pyautogui.mouseUp(x=2745, y=778, button='left',duration=5)
2.键盘控制
输入信息,但是只能输入字符串,不能输入中文
# 2秒钟鼠标移动到坐标为500,500的位置
pyautogui.moveTo(x=500, y=500, duration=2)
# 鼠标左击一次
pyautogui.click()
# 输入信息
pyautogui.typewrite(message='test',interval=0.5)
按住、放开,键盘上的字符都可以
# 按住shift键
pyautogui.keyDown('shift')
# 放开shift键
pyautogui.keyUp('shift')
按一下
#按一下ESC键
pyautogui.press('esc')
组合键
# 组合键
pyautogui.hotkey('ctrl', 'c')
3.截屏
在实际应用中有一个用法,截取对应位置的文字,然后将图片转化成文字,这个这pytesseract章节说明
# 截取整个屏幕
img = pyautogui.screenshot()
img.save('img.png')
# 截取指定位置、大小的图片
img = pyautogui.screenshot(region=[10, 20, 30, 40]) # x,y,w,h
img.save(img)
4.查找图片所在的位置
这个功能还是比较常用的,找到对应的位置,点击
img_location = pyautogui.locateOnScreen(image='img.png')
logging.info("img location %s", img_location)
if img_location:
# 获取图片的中心位置,然后点击
x, y = pyautogui.center(img_location)
pyautogui.moveTo(x, y, duration=1)
pyautogui.click()
logging.info("click img_location...")
网友评论