PyAutoGUI是一个简单易用,跨平台的可以模拟键盘鼠标进行自动操作的python库。
使用pip的方式安装pyautogui模块
pip install pyautogui
pyautogui在使用的时候有两个比较关键的隐患(程序在启动起来以后很难关闭)需要注意一下。一是鼠标出现在屏幕的最上方会出现报错,二是键盘的自动操作太快,所以需要先设置一下相关的参数。
import pyautogui as ui # 导入pyautogui代码块
ui.FAILSAFE = False # 关闭自动防御故障的功能
ui.PAUSE = 1 # 设置键盘操作的时候停顿间隔时间为1秒
1、鼠标的相关控制
'''获取屏幕分辨率'''
print(ui.size())
# Size(width=1920, height=1080)
# 屏幕分标率:宽:1920px、高:1080px
'''移动鼠标到指定位置'''
ui.moveTo(250, 400, duration=1) # duration 参数设置移动到指定位置的时间为1秒钟
'''按方向移动鼠标'''
ui.moveRel(200, 300, duration=2) # 鼠标向右移动200px、向下移动300px,移动时间为2秒钟
'''获取当前鼠标的位置'''
print(ui.position())
# Point(x=450, y=700)
'''单击鼠标'''
ui.click(200, 200, button='left') # 在屏幕200px,200px的位置点击鼠标左键
ui.click(200, 200, button='right') # 在屏幕200px,200px的位置点击鼠标右键
ui.click(200, 200, button='middle') # 在屏幕200px,200px的位置点击鼠标中键
'''双击鼠标'''
ui.doubleClick(200, 200) # 在屏幕200px,200px的位置双击鼠标左键
ui.rightClick(200, 200) # 在屏幕200px,200px的位置双击鼠标右键
ui.middleClick(200, 200) # 在屏幕200px,200px的位置双击鼠标中键
'''按下与释放鼠标'''
ui.mouseDown() # 按下鼠标
ui.mouseUp() # 释放鼠标
'''拖动鼠标'''
ui.dragTo(200, 300, duration=1) # 拖动鼠标到指定位置
ui.dragRel(200, 300, duration=4) # 按方向拖动鼠标
'''滚动鼠标'''
ui.scroll(450) # 向上滚动450个像素单位
2、键盘的相关控制
'''
pyautogui.keyDown() : 模拟按键按下;
pyautogui.keyUp() : 模拟按键释放;
pyautogui.press() : # 就是调用keyDown() & keyUp(),模拟一次按键;
pyautogui.typewrite('this',0.5) : 第一参数是输入内容,第二个参数是每个字符间的间隔时间;
pyautogui.typewrite(['T','h','i','s']):typewrite 还可以传入单字母的列表;
'''
ui.keyDown('ctrl') # 按下ctrl键
ui.press('Y') # 按一下Y键
ui.keyUp('ctrl') # 释放ctrl键
ui.typewrite('YYDS', 0.5) # 输入YYDS的字符串,每个字符之间的时间间隔是0.5秒
'''一些特定键的使用'''
# 可以使用typewrite函数调用类似于enter的特殊按键
ui.typewrite(['enter']) # 模拟按一次enter键
'''
键盘字符串 说明
enter(或return 或 \n) 回车
esc ESC键
shiftleft, shiftright 左右SHIFT键
altleft, altright 左右ALT键
ctrlleft, ctrlright 左右CTRL键
tab (\t) TAB键
backspace, delete BACKSPACE 、DELETE键
pageup, pagedown PAGE UP 和 PAGE DOWN键
home, end HOME 和 END键
up, down, left,right 箭头键
f1, f2, f3…. f12 F1…….F12键
volumemute, volumedown,volumeup 声音变大变小静音(有些键盘没有)
pause PAUSE键,暂停键
capslock CAPS LOCK 键
numlock NUM LOCK 键
scrolllock SCROLLLOCK 键
insert INSERT键
printscreen PRINT SCREEN键
winleft, winright Win键(windows )
command command键(Mac OS X )
option option(Mac OS X)
'''
可以根据上面的按键处理列表对应的字符串来使用typewrite函数处理特殊按键。
ui.typewrite(['esc']) # 模拟按一下esc键
'''快捷键的模拟处理'''
# 程序猿神器:CV大法
ui.hotkey('ctrl','c') # ctrl + c
ui.hotkey('ctrl','v') # ctrl + v
也可以使用传统的方式挨个按键,最后就组合成了的快捷键
# 模拟代码格式化快捷键ctrl + alt +l
ui.keyDown('ctrl')
ui.keyDown('alt')
ui.keyDown('l')
# 挨个释放这几个键
ui.keyUp('l')
ui.keyUp('alt')
ui.keyUp('ctrl')
后续需要做相关的自动化操作,我们会做一些相关的实例(仅限于学习使用的相关实例)。

【往期精选】
来自程序猿的生日蛋糕你见过吗?
懒人python操作,代码中永远只需要导入一个库...
自动化办公:手机号码提取器,使用正则表达式轻松提取文本文件中的手机号码...
刚刚发现的可视化动态图库ipyvizzu,太好看了!
记住这些windows网络操作命令,轻松搞定自己的电脑网络!
很好奇,就使用rubyonrails自动化单元测试而言,你们正在做什么?您是否创建了一个脚本来在cron中运行rake作业并将结果邮寄给您?git中的预提交Hook?只是手动调用?我完全理解测试,但想知道在错误发生之前捕获错误的最佳实践是什么。让我们理所当然地认为测试本身是完美无缺的,并且可以正常工作。下一步是什么以确保他们在正确的时间将可能有害的结果传达给您? 最佳答案 不确定您到底想听什么,但是有几个级别的自动代码库控制:在处理某项功能时,您可以使用类似autotest的内容获得关于哪些有效,哪些无效的即时反馈。要确保您的提
当我在Rails控制台中按向上或向左箭头时,出现此错误:irb(main):001:0>/Users/me/.rvm/gems/ruby-2.0.0-p247/gems/rb-readline-0.4.2/lib/rbreadline.rb:4269:in`blockin_rl_dispatch_subseq':invalidbytesequenceinUTF-8(ArgumentError)我使用rvm来管理我的ruby安装。我正在使用=>ruby-2.0.0-p247[x86_64]我使用bundle来管理我的gem,并且我有rb-readline(0.4.2)(人们推荐的最少
我正在使用Ruby2.1.1和Rails4.1.0.rc1。当执行railsc时,它被锁定了。使用Ctrl-C停止,我得到以下错误日志:~/.rvm/gems/ruby-2.1.1/gems/spring-1.1.2/lib/spring/client/run.rb:47:in`gets':Interruptfrom~/.rvm/gems/ruby-2.1.1/gems/spring-1.1.2/lib/spring/client/run.rb:47:in`verify_server_version'from~/.rvm/gems/ruby-2.1.1/gems/spring-1.1.
我将我的Rails应用程序部署到OpenShift,它运行良好,但我无法在生产服务器上运行“Rails控制台”。它给了我这个错误。我该如何解决这个问题?我尝试更新rubygems,但它也给出了权限被拒绝的错误,我也无法做到。railsc错误:Warning:You'reusingRubygems1.8.24withSpring.UpgradetoatleastRubygems2.1.0andrun`gempristine--all`forbetterstartupperformance./opt/rh/ruby193/root/usr/share/rubygems/rubygems
我收到这个错误:RuntimeError(自动加载常量Apps时检测到循环依赖当我使用多线程时。下面是我的代码。为什么会这样?我尝试多线程的原因是因为我正在编写一个HTML抓取应用程序。对Nokogiri::HTML(open())的调用是一个同步阻塞调用,需要1秒才能返回,我有100,000多个页面要访问,所以我试图运行多个线程来解决这个问题。有更好的方法吗?classToolsController0)app.website=array.join(',')putsapp.websiteelseapp.website="NONE"endapp.saveapps=Apps.order("
无论您是想搭建桌面端、WEB端或者移动端APP应用,HOOPSPlatform组件都可以为您提供弹性的3D集成架构,同时,由工业领域3D技术专家组成的HOOPS技术团队也能为您提供技术支持服务。如果您的客户期望有一种在多个平台(桌面/WEB/APP,而且某些客户端是“瘦”客户端)快速、方便地将数据接入到3D应用系统的解决方案,并且当访问数据时,在各个平台上的性能和用户体验保持一致,HOOPSPlatform将帮助您完成。利用HOOPSPlatform,您可以开发在任何环境下的3D基础应用架构。HOOPSPlatform可以帮您打造3D创新型产品,HOOPSSDK包含的技术有:快速且准确的CAD
本教程将在Unity3D中混合Optitrack与数据手套的数据流,在人体运动的基础上,添加双手手指部分的运动。双手手背的角度仍由Optitrack提供,数据手套提供双手手指的角度。 01 客户端软件分别安装MotiveBody与MotionVenus并校准人体与数据手套。MotiveBodyMotionVenus数据手套使用、校准流程参照:https://gitee.com/foheart_1/foheart-h1-data-summary.git02 数据转发打开MotiveBody软件的Streaming,开始向Unity3D广播数据;MotionVenus中设置->选项选择Unit
C#实现简易绘图工具一.引言实验目的:通过制作窗体应用程序(C#画图软件),熟悉基本的窗体设计过程以及控件设计,事件处理等,熟悉使用C#的winform窗体进行绘图的基本步骤,对于面向对象编程有更加深刻的体会.Tutorial任务设计一个具有基本功能的画图软件**·包括简单的新建文件,保存,重新绘图等功能**·实现一些基本图形的绘制,包括铅笔和基本形状等,学习橡皮工具的创建**·设计一个合理舒适的UI界面**注明:你可能需要先了解一些关于winform窗体应用程序绘图的基本知识,以及关于GDI+类和结构的知识二.实验环境Windows系统下的visualstudio2017C#窗体应用程序三.
我们目前正在为ROR3.2开发自定义cms引擎。在这个过程中,我们希望成为我们的rails应用程序中的一等公民的几个类类型起源,这意味着它们应该驻留在应用程序的app文件夹下,它是插件。目前我们有以下类型:数据源数据类型查看我在app文件夹下创建了多个目录来保存这些:应用/数据源应用/数据类型应用/View更多类型将随之而来,我有点担心应用程序文件夹被这么多目录污染。因此,我想将它们移动到一个子目录/模块中,该子目录/模块包含cms定义的所有类型。所有类都应位于MyCms命名空间内,目录布局应如下所示:应用程序/my_cms/data_source应用程序/my_cms/data_ty
1.postman介绍Postman一款非常流行的API调试工具。其实,开发人员用的更多。因为测试人员做接口测试会有更多选择,例如Jmeter、soapUI等。不过,对于开发过程中去调试接口,Postman确实足够的简单方便,而且功能强大。2.下载安装官网地址:https://www.postman.com/下载完成后双击安装吧,安装过程极其简单,无需任何操作3.使用教程这里以百度为例,工具使用简单,填写URL地址即可发送请求,在下方查看响应结果和响应状态码常用方法都有支持请求方法:getpostputdeleteGet、Post、Put与Delete的作用get:请求方法一般是用于数据查询,