参考 :    使用selenium自动发送QQ邮件(一)

使用selenium自动发送QQ邮件(二)

python+selenium 自动化测试入门示例(邮件发送)

前言:

最近在学习python,参考书目是《Python编程快速上手  让繁琐工作自动化》,其中11.11.1命令行邮件程序练习题,结合实际应用,决定实现selenium+python自动发送QQ邮件功能,网上搜索资料很多,如参考所示。简单实现如下,可发送一封邮件到指定目录,后期根据参考再修改完善,看来学习python还是要多编程练习,而且前端的知识差的太多也不方便。。。

具体需要什么知识基础请参考:

https://blog.csdn.net/huilan_same/article/details/52559711

实现:

首先定义邮件发送的步骤:

第一步:打开浏览器,调到邮箱登录页面,输入账号密码并登录;

第二部:点击进入邮件编辑页面,输入地址、标题和内容,并发送;

第三部:关闭浏览器;

代码:

根据之前的动作分解,结合最上面的参考文献,实现下述python代码,由于对java还不是很懂,对python才刚入门,对unittest也不是很懂,决定使用python+selenium实现,简单完成了函数封装,Ps,我一个运维不务正业吗,就像参考书里说的“Python编程快速上手  让繁琐工作自动化”,现在太多繁琐没技术含量的工作了....。

"""
此脚本主要参考:https://blog.csdn.net/vae0000/article/details/73162662
https://blog.csdn.net/vae0000/article/details/73179680
https://blog.csdn.net/qq_19655383/article/details/70141624
主要修改了搜索的网页,尝试使用selenium库实现QQ邮件的自动发送
最后修改日期:2018-5-12
V1.0 实现脚本化命令行方式自动发送邮件
V1.1封装登陆,写信,发送与退出子函数,并尝试调用
最后修改作者:QiYe005
"""
from selenium import webdriver
import time#函数名称: LoginFun(_driver,_emailAddress,_username,_password)
#函数功能: 实现根据指定QQ邮箱网页,账号,密码实现登陆QQ邮箱动作
#输入参数: _driver:webdirver模块初始化Firfox对象?
#                 _emailAddress:访问QQ邮箱网址
#                 _username:邮箱用户名
#                 _password:相应邮箱用户名密码
#输出参数: 从新定位的driver对象
#修改信息:   2018-05-12  QiYe005
def LoginFun(_driver,_emailAddress,_username,_password):print ("尝试登陆qq邮箱网址")#登录网址_driver.get(_emailAddress)#尝试账号密码方式登录_driver.switch_to_frame("login_frame");  loginByUserLink = _driver.find_element_by_link_text("帐号密码登录");  loginByUserLink.click();  username = _driver.find_element_by_id("u");  password = _driver.find_element_by_id("p");  loginbutton = _driver.find_element_by_id("login_button");print ("尝试输入账号密码并登陆")#输入账号密码username.clear();  password.clear();  username.send_keys(_username);  password.send_keys(_password);  loginbutton.click();  print ("账号密码登陆按钮已点击")_driver.implicitly_wait(5) #函数名称      WriteAndSendFun(_driver,_receiverAddress,_subjectString,_contentString)
#函数功能:   实现根据指定收件人定制,主题,新建邮件正文内容,实现填写及发送动作
#输入参数:   _driver:webdirver模块初始化Firfox对象?
#                   _receiverAddress:收件人邮箱
#                   _subjectString:主题名称
#                   _contentString:邮件正文内容
#输出参数:   从新定位的driver对象
#修改信息:    2018-05-12  QiYe005
def WriteAndSendFun(_driver,_receiverAddress,_subjectString,_contentString):#转自:https://blog.csdn.net/vae0000/article/details/73162662_driver.switch_to_default_content()  writeLink = _driver.find_element_by_link_text("写信");  writeLink.click();  #切换到写信框架_driver.switch_to_frame("mainFrame");  #收信人信息toUser = _driver.find_element_by_xpath(".//*[@id='toAreaCtrl']/div[2]/input"); toUser.send_keys(_receiverAddress)#邮件主题信息title = _driver.find_element_by_id("subject");  title.send_keys(_subjectString); #邮件正文信息_driver.switch_to_frame(_driver.find_element_by_tag_name("iframe")); content = _driver.find_element_by_tag_name("body");content.send_keys(_contentString);#送信按钮触发_driver.switch_to.parent_frame();  sendButton = _driver.find_element_by_link_text("发送"); sendButton.click(); print ("邮件内容已经填写完毕并触发“发送按钮”")_driver.implicitly_wait(5) #函数名称      LogoutFun(_driver)直接关闭浏览器退出
#函数功能:   实现退出操作,原来发送邮件后页面自动跳转,想定位到退出按钮失败,还是太年轻了
#输入参数:   _driver:webdirver模块初始化Firfox对象?
#输出参数:   无
#修改信息:      2018-05-12  QiYe005
def LogoutFun(_driver):#退出操作#driver.switch_to_frame("actionFrame")#logoutLink = driver.find_element_by_link_text("退出"); #logoutLink.click()#time.sleep(3)print("最后退出邮件")#按照顺序来的,应该不用定义函数了吧   _driver.close()#定义主函数
def main():#驱动存放位置webDriverLoc=r'C:\bin\geckodriver.exe'driver = webdriver.Firefox(executable_path=webDriverLoc)#QQ邮箱网址,账号密码相关emailAddress="https://mail.qq.com/"username='登陆邮箱账号'password='登陆邮箱密码'#邮件内容定义receiverAddress="收件人邮箱"subjectString="selenup+python自动化测试"contentString="这是邮件正文,测试,测试"#调用登陆操作子函数LoginFun(driver,emailAddress,username,password)#调用写信与发送操作子函数WriteAndSendFun(driver,receiverAddress,subjectString,contentString)#最后调用退出操作子函数LogoutFun(driver)
#调用主函数
if __name__ == "__main__":main()    

初识selenium--发送QQ邮件相关推荐

  1. 使用python+selenium发送QQ邮件

    参考 :    初识selenium-发送QQ邮件  链接------>https://blog.csdn.net/qiye005/article/details/80259607 前言: 为实 ...

  2. python3:利用SMTP协议发送QQ邮件+附件

    转载请表明出处:https://www.cnblogs.com/shapeL/p/9115887.html 1.发送QQ邮件,首先必须知道QQ邮箱的SMTP服务器 http://service.mai ...

  3. springboot发送qq邮件

    springboot发送qq邮件 1_开启邮箱相关权限并获取邮箱授权码 2_实现功能 2.1_添加mail的依赖 2.1.1_创建工程时添加 2.1.2_在工程中添加 2.2_配置文件applicat ...

  4. html发送qq邮件消息,Python3实现发送QQ邮件功能(html)_python

    这篇文章主要为大家详细介绍了Python3实现发送QQ邮件功能,html格式的qq邮件,具有一定的参考价值,对Python3感兴趣的小伙伴们可以参考一下本文,本文为大家分享了Python3实现发送QQ ...

  5. Java发送QQ邮件的3种形式(commons-email)

    第一步:项目引入相应资源   commons-email-xx.jar,mail.jar,activation.jar maven项目pom引入 (注意对应配置的版本问题哦~)     可参考 --& ...

  6. 使用CodeIgniter框架发送QQ邮件

    使用CodeIgniter框架发送QQ邮件 1.在[CodeIgniter(CI)框架]的根目录下的./application/libraries/下创建[自定义的发送QQ邮件类库:Send_Emai ...

  7. JavaMail发送QQ邮件

    JavaMail发送QQ邮件 1.开启QQ服务并获得授权码 授权码是QQ邮箱推出的,用于登录第三方客户端的专用密码 适用于登录以下服务:POP3/IMAP/SMTP/Exchange/CardDAV/ ...

  8. Java 通过SMTP实现发送QQ邮件

    在eclipse中创建项目,并把javax.amil.jar和commons-email-1.5,jar复制到项目中 链接:https://pan.baidu.com/s/1sQjA1GEpKi6IJ ...

  9. QQ邮箱炸啦,我的附件名怎么乱码?解决javaMail发送QQ邮件,附件名乱码的问题

    解决javaMail发送QQ邮件,附件名乱码的问题 问题背景 具体问题 解决思路 源码Debug 解决方式 问题背景 项目里面使用javaMail发QQ邮件,日志显示我们这边传过去的附件名是正常的,个 ...

最新文章

  1. Educational Codeforces Round 44 (Rated for Div. 2)
  2. 编写Thymeleaf视图以展示数据
  3. CSS 3实战:开发与设计迷你书
  4. android加一减一控件,Android的步进器(增加/减少值)控件?
  5. Python多线程报错之RuntimeError
  6. 【C语言】一些面试题。
  7. 网吧电脑显示连不上服务器,Pubwin客户机连不上服务器怎么办?
  8. 纬地道路纵断面设计教程_中铁城际总结公路设计应掌握的知识要领解答
  9. 检查pdf字体是否全部嵌入
  10. excel高效之sumproduct()带权重计算 如:绩效
  11. 《数据结构与算法基础 严蔚敏版》第三章 堆栈与队列
  12. Java代码修改文件后缀名
  13. java json字符串转JSONObject对象、转JAVA对象、转List<T>对象
  14. 【华为OD机试真题 JAVA】九宫格按键输入
  15. google earth engine随缘学习(十一)影像分割
  16. 【ArcGIS教程】专题图制作之人口地图——湖北省人口密度分析
  17. 微信朋友圈python广告评论_【Python】我的微信朋友圈分析
  18. 微信小程序解析unionid
  19. Java+MySQL共享单车管理系统的设计与实现
  20. iOS音乐播放器的后台播放和远程控制

热门文章

  1. “深入理解计算机系统”小组学习的Task01-学习日志
  2. Conflux项目进度报告 十月第一期
  3. Java笔试面试-Executors
  4. StretchSense 打造了一款真正舒适的手部动作捕捉手套
  5. vmware安装linux虚拟机
  6. python 数字转换成汉字,Python实现把数字转换成中文
  7. idea中*mapper.xml文件字体颜色变成黄色的解决办法
  8. 深度解析——图片加载到内存中的大小计算内存优化
  9. 常见的BlockingQueue有哪些
  10. python支持复数以及相关的运算吗_python怎么实现复数运算