python+selenium实现QQ邮箱自动发送功能


Posted in Python onJanuary 23, 2019

python实现从登录到自动发送qq邮件,供大家参考,具体内容如下

qq邮箱登录注意问题

账户密码登录框是写在一个iframe上的,所以我们要先进入iframe中才能定位到下面的两个输入框和登录按钮。从下图我们可以看到iframe=login_frame,我们可以是用driver.switch.to_frame(“login_frame”)进入iframe中。接下来的两个输入框和登录按钮都有id属性,我们只需要用driver.find_element_by_id(“xxx”)就可以定位到元素。
记得退出iframe,不然定位后面的所有元素都会失败(切记),退出iframe的话我们可以写driver.switch_to_default_content()来实现(个人发现to后面用“.”还是“_”符号,都可以将后面显示出来)。大家可以尝试下,把这句话省略,接着定位下面的元素。

python+selenium实现QQ邮箱自动发送功能

主页面注意事项

主页面上左上角的“写信”按钮,你右击是不会显示查看元素的,第一种方法,我们首先在页面其他地方右击,接着选中查看元素,然后用查看器左边的那个鼠标按钮去点击“写信”按钮。就可以查看到。第二种方法,直接根据“写信”两个字去定位元素。我们可以这样driver.find_element_by_link_text(“写信”)

写信页面注意事项

写信页面都写在iframe里面,所以要进入iframe中,然后定位收件人的输入框,我们可以从下面的页面代码中看到class的值有很多地方都用到(不是唯一),所有我们相对路径的方法,driver.find_element_by_xpath("//*[@id=“toAreaCtrl”]//div[2]/input")。这样就可以解决了。

文下面的文本框注意四点,第一点,文本框在一个iframe中;第二点,文本框没有任何的属性值,所以我们可以使用HTML标签名定位,driver.find_element_by_tag_name(“body”);第三点文本框需要先点击(click),在编写(send_keys),如果没有先点击在编写,那么你send_keys(“xxxx”)内容会放在主题后面的文本框中。第四点,退出iframe,然后再进入iframe=“mainFrame”,因为退出的话就是所有的iframe都退出。

完整脚本

from selenium import webdriver
import unittest,time,traceback
from selenium.common.exceptions import TimeoutException,NoSuchElementException


class TestDemo(unittest.TestCase):
 def setUp(self):
 self.driver=webdriver.Firefox(executable_path='f:\\geckodriver')


 def test_sendqqemail(self):
 try:
  url = 'https://mail.qq.com/'
  self.driver.get(url)
  self.driver.maximize_window()
  self.driver.switch_to_frame("login_frame")
  self.driver.find_element_by_id("u").send_keys("用户名")
  self.driver.find_element_by_id("p").send_keys("密码")
  self.driver.find_element_by_id("login_button").click()
  time.sleep(5)
  self.driver.switch_to.default_content() #退出iframe,如果没这句话后面的元素定位都会出错
  self.driver.find_element_by_id('composebtn').click()
  #写信模块都在iframe=mainFrame页面上
  self.driver.switch_to_frame("mainFrame")
  time.sleep(3)
  self.driver.find_element_by_xpath("//*[@id='toAreaCtrl']/div[2]/input").send_keys("收件人")
  #定位主题
  self.driver.find_element_by_xpath('//input[@id="subject"]').send_keys("主题")
  #正文编写iframe中
  self.driver.switch_to_frame(self.driver.find_element_by_class_name("qmEditorIfrmEditArea"))
  #self.driver.find_element_by_xpath("/html/body").send_keys('你好,再见')
  #定位正文
  content=self.driver.find_element_by_tag_name("body")
  #必须click(),不然会写到主题里面
  content.click()
  content.send_keys("正文内容")
  time.sleep(3)
  self.driver.switch_to.default_content()
  self.driver.switch_to_frame("mainFrame")
  #定位发送按钮
  self.driver.find_element_by_xpath('//a[.="发送"]').click()
 except TimeoutException:
  print("显示等待页面元素超时")
 except NoSuchElementException:
  print("寻找页面元素不存在",traceback.print_exc())
 except Exception:
  print(traceback.print_exc())

 def tearDown(self):
 self.driver.quit()


 if __name__=="__main__":
 unittest.main()

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python制作企业邮箱的爆破脚本
Oct 05 Python
Pycharm学习教程(4) Python解释器的相关配置
May 03 Python
利用python批量给云主机配置安全组的方法教程
Jun 21 Python
Tornado 多进程实现分析详解
Jan 12 Python
python正则表达式之对号入座篇
Jul 24 Python
Python实现某论坛自动签到功能
Aug 20 Python
Python 实现自动导入缺失的库
Oct 29 Python
Python面向对象封装操作案例详解
Dec 31 Python
解决tensorboard多个events文件显示紊乱的问题
Feb 15 Python
通过python连接Linux命令行代码实例
Feb 18 Python
Python 字符串处理特殊空格\xc2\xa0\t\n Non-breaking space
Feb 23 Python
Python3爬虫中识别图形验证码的实例讲解
Jul 30 Python
python3实现逐字输出的方法
Jan 23 #Python
对Python w和w+权限的区别详解
Jan 23 #Python
Python中文件的写入读取以及附加文字方法
Jan 23 #Python
python write无法写入文件的解决方法
Jan 23 #Python
Python 支付整合开发包的实现
Jan 23 #Python
python使用selenium登录QQ邮箱(附带滑动解锁)
Jan 23 #Python
python判断字符串或者集合是否为空的实例
Jan 23 #Python
You might like
PHP+jQuery实现自动补全功能源码
2013/05/15 PHP
PHP实现搜索相似图片
2015/09/22 PHP
PHP中JSON的应用技巧
2015/10/10 PHP
学习php设计模式 php实现门面模式(Facade)
2015/12/07 PHP
Smarty环境配置与使用入门教程
2016/05/11 PHP
Laravel学习教程之View模块详解
2017/09/18 PHP
Yii框架实现对数据库的CURD操作示例
2019/09/03 PHP
如何用javascript计算文本框还能输入多少个字符
2015/07/29 Javascript
javascript设置页面背景色及背景图片的方法
2015/12/29 Javascript
微信小程序 http请求详细介绍
2016/10/09 Javascript
Node.js开发教程之基于OnceIO框架实现文件上传和验证功能
2016/11/30 Javascript
浅谈javascript中的事件冒泡和事件捕获
2016/12/28 Javascript
Angular在一个页面中使用两个ng-app的方法(二)
2017/02/20 Javascript
node.js中EJS 模板快速入门教程
2017/05/08 Javascript
详解基于vue-cli配置移动端自适应
2018/01/13 Javascript
JS中双击和单击事件冲突的解决方法
2018/04/09 Javascript
vue-cli 3.x 配置Axios(proxyTable)跨域代理方法
2018/09/19 Javascript
vue: WebStorm设置快速编译运行的方法
2018/10/18 Javascript
轻松解决JavaScript定时器越走越快的问题
2019/05/13 Javascript
jquery实现下载图片功能
2019/07/18 jQuery
在Python下使用Txt2Html实现网页过滤代理的教程
2015/04/11 Python
python递归查询菜单并转换成json实例
2017/03/27 Python
python爬虫系列Selenium定向爬取虎扑篮球图片详解
2017/11/15 Python
python根据unicode判断语言类型实例代码
2018/01/17 Python
KIKO MILANO西班牙官网:意大利领先的化妆品和护肤品品牌
2019/05/03 全球购物
优秀学生自我鉴定范例
2013/12/18 职场文书
个人简历自我评价范文
2014/02/04 职场文书
跟单业务员岗位职责
2014/03/08 职场文书
工程质量承诺书范文
2014/03/27 职场文书
经济贸易系毕业生求职信
2014/05/31 职场文书
课内比教学心得体会
2014/09/09 职场文书
银行党的群众路线教育实践活动对照检查材料
2014/09/25 职场文书
考试作弊万能检讨书
2014/10/19 职场文书
谢师宴答谢词
2015/01/05 职场文书
2015年留守儿童工作总结
2015/05/22 职场文书
干部考核工作总结2015
2015/07/24 职场文书