PyAutoGUI模块可以模拟键盘和鼠标操作,同时还支持基于图片查找屏幕中的指定内容。本文尝试模拟鼠标和键盘操作通过浏览器登录QQ邮箱。
  最初的想法是通过浏览器图标定位浏览器,然后启动浏览器,再定位到输入栏输入QQ邮箱地址后登录邮箱,这种方式主要是要能通过图片准确定位到所需点击或输入内容的位置,然后再模拟鼠标和键盘操作。但是编写程序过程中却发现,最简单的还是通过坐标定位,由于屏幕大小固定,所需点击或输入内容的位置也固定,只要预先计算坐标,直接将鼠标移动到坐标处进行处理即可。同时PyAutoGUI网站的帮助文档(参考文献1)中给出了获取当前鼠标位置的示例代码,可以轻松地获取所需的坐标位置,示例代码如下图所示:

import pyautogui, sys
print('Press Ctrl-C to quit.')
try:while True:x, y = pyautogui.position()positionStr = 'X: ' + str(x).rjust(4) + ' Y: ' + str(y).rjust(4)print(positionStr, end='')print('\b' * len(positionStr), end='', flush=True)
except KeyboardInterrupt:print('\n')

  获取到坐标后,代码写起来也比较简单,大致思路就是将鼠标移动到指定位置,模拟鼠标点击或键盘输入,但是实际执行过程中遇到了以下问题:

  • 模拟鼠标双击没有反应。这个在之前的文章中已经讨论过,主要是被360安全软件拦截了。目前有效的解决办法是将浏览器图标固定到任务栏中,然后单击任务栏中的浏览器图标启动浏览器;
  • 清除浏览器地址栏。打开浏览器后,地址栏中默认有内容,或者是空白页,或者是默认的访问地址,此时定位到地址栏输入内容的话,会将输入内容插入到默认内容中。浏览器打开时,如果地址栏有内容,默认是选中的,因此先模拟按delete键,再输入内容;
  • 浏览器默认输入法。本人浏览器中默认输入法为中文,因此在浏览器中输入QQ邮箱地址后,如果仅模拟一次回车,只是会将邮箱地址录入到地址栏,并不会跳转到QQ邮箱网站,需要模拟两次回车才能跳转;
  • 输入邮箱账号。跳转到QQ邮箱网站后,账号输入框默认显示上次登录时的账号信息,需要清空账号输入框内容后再输入账号,本文中模拟鼠标移动到输入框内,然后模拟全选键ctrl+a,再模拟delete键清空内容,这样就可以输入账号。

  由于是在常用电脑中登录QQ邮箱,登录时没有进行图片验证,输入账号和密码后,点击登录按钮就直接登进邮箱了,完整的代码如下所示:

# coding=utf-8import pyautogui
import time#启动浏览器
pyautogui.moveTo(345,554,2)
pyautogui.click()
time.sleep(2)#移动到地址栏并删除地址栏选中内容
pyautogui.moveTo(456,140,2)
pyautogui.press('del')
pyautogui.click()
time.sleep(2)#输入qq邮箱地址
pyautogui.typewrite('mail.qq.com')
pyautogui.press('enter')
pyautogui.press('enter')#输入qq邮箱账号和密码
pyautogui.moveTo(980,220,2)
pyautogui.click()
time.sleep(1)
pyautogui.hotkey('ctrl', 'a')
pyautogui.typewrite('12345678')
time.sleep(1)
pyautogui.moveTo(980,280,1)
pyautogui.click()
time.sleep(1)
pyautogui.typewrite('XXXXXXXX')#点击登录邮箱
pyautogui.moveTo(1127,462,1)
pyautogui.click()
time.sleep(2)

  代码比较简单,主要是因为没有图片验证就直接登进邮箱了,如果是在不常用电脑上登录的话,还需要经过2道图片验证后才能登录,由于图片验证比较复杂(一个是拼图,另一个是点字),再使用PyAutoGUI模块模拟登录就不知道行不行了。

参考文献:
[1]https://pyautogui.readthedocs.io/en/latest/

调用Python的PyAutoGUI模块模拟登录QQ邮箱相关推荐

  1. python模拟登录qq邮箱爬取_python模拟登录qq邮箱

    前两天做一个任务,要写一个收取qq邮箱邮件的脚本.开始认为挺简单,后来发现还是有一些坑在里面. 首先使用python尝试模拟登录qq邮箱,发现普通用户已经不能通过账号密码模拟登录qq邮箱了.要用到授权 ...

  2. python爬取qq邮箱_使用Python模拟登录QQ邮箱获取QQ好友列表

    最近因开发项目的需要,有一个需求,就是很多SNS网站都有的通过 Email地址 导入好友列表,不过这次要导入的不是Email 列表,而是QQ的好友列表. 实现方式: 通过google一搜,实现的方式大 ...

  3. python模拟登录qq邮箱

    前两天做一个任务,要写一个收取qq邮箱邮件的脚本.开始认为挺简单,后来发现还是有一些坑在里面. 首先使用python尝试模拟登录qq邮箱,发现普通用户已经不能通过账号密码模拟登录qq邮箱了.要用到授权 ...

  4. python获取qq好友ip_使用Python模拟登录QQ邮箱获取QQ好友列表

    最近因开发项目的需要,有一个需求,就是很多SNS网站都有的通过 Email地址 导入好友列表,不过这次要导入的不是Email 列表,而是QQ的好友列表. 实现方式: 通过google一搜,实现的方式大 ...

  5. python模拟登录qq获取好友信息_使用Python模拟登录QQ邮箱获取QQ好友列表

    最近因开发项目的需要,有一个需求,就是很多SNS网站都有的通过 Email地址 导入好友列表,不过这次要导入的不是Email 列表,而是QQ的好友列表. 实现方式: 通过google一搜,实现的方式大 ...

  6. Python_模拟登录QQ邮箱保存cookies

    说明:该程序用于模拟登录QQ邮箱.在首次模拟登录后,将页面的cookies保存,为下次直接登录做准备. from selenium import webdriver from selenium.web ...

  7. python访问陌生人qq空间_在Python中使用Phantomjs模拟登录QQ空间

    一.问题来源 在使用Python进行数据爬取的过程中,我们一般使用Selenuim自动化测试工具对需要进行登录验证和动态JS数据的站点进行爬取.而与Selenuim相对应的浏览器组件,为了方便起见,一 ...

  8. php模拟登录qq邮箱_PHP 利用QQ邮箱发送邮件的实现

    这篇文章主要介绍了关于PHP 利用QQ邮箱发送邮件的实现,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下在 PHP 应用开发中,往往需要验证用户邮箱.发送消息通知,而使用 PHP 内置的 ...

  9. java模拟登录qq邮箱_使用Java实现qq邮箱发送邮件

    本文实例为大家分享了Java操作qq邮箱发送邮件的具体代码,供大家参考,具体内容如下 今天尝试了使用QQ邮箱的POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务来进行发送 ...

  10. python3爬虫——模拟登录QQ邮箱

    上一篇: 爬取丁香园网站的信息 该教程是通过selenium实现的 安装selenium: 要下载浏览器驱动,到这个网址 https://github.com/mozilla/geckodriver/ ...

最新文章

  1. SpringRestTemplate用法详解
  2. 深度学习框架哪家强?国产框架OneFlow做了一份测评报告
  3. 朋友,别告诉我你懂分布式事务!
  4. 【深度学习】PyTorch深度学习技术生态
  5. window连接树莓派linux桌面,远程连接Raspberry Pi(树莓派)图形用户界面(X Window)
  6. SOCKET入门最简单的程序啊
  7. ie8 ajax访问不了https,ie8不支持https协议的api接口么
  8. 计算机中的基础元素,数据结构基础
  9. mac修改文件的默认打开方式
  10. 第15天android:使用sqlite
  11. setNavigationBarTitle小程序基础性操作标题改变
  12. 怎么调用html调色板,JS实现仿PS的调色板效果完整实例
  13. 各种品牌进入Bios方式
  14. STM32F4xx固件库分析
  15. html中加图片边框的,用HTML代码给图片添加边框方法
  16. Microsoft Edge浏览器重新打开主页没有变化但会重新打开一个淘宝天猫页面的解决办法
  17. DveC++编译[Error] ld returned 1 exit status
  18. css中的各种选择器
  19. 河南工业大学高级JAVA实验,大学_计算机控制技术实验报告河南工业大学4
  20. uoj #311.【UNR #2】积劳成疾 dp

热门文章

  1. docker-ce 的安装与镜像加速
  2. TCP/IP协议漏洞实验
  3. oracle normsinv函数,统计函数NormSDist和NormSInv函数实现
  4. 计算机主板上的纽扣电池型号是,主板上的纽扣电池是什么
  5. 苹果开发者中心密保问题忘了。
  6. gradle 离线模式offline 用法
  7. DDoS和CC攻击的技术原理区别
  8. 游戏中常见的Bug也有你不知道的秘密
  9. SharePoint - 如何查询SharePoint ID?
  10. 一款酷炫的开源 macOS 屏幕保护程序