import time
from selenium import webdriver
from selenium.webdriver import ChromeOptions
from selenium.webdriver.common.keys import Keys
from getpass import getpass def run():
driver.get(url='https://mail.qq.com/')
# 遇到iframe,需要切换
iframe_list = driver.find_elements_by_tag_name('iframe')
# print(iframe_list)
driver.switch_to.frame(iframe_list[]) # 输入用户名、密码并登录
driver.find_element_by_class_name('inputstyle').send_keys(user)
driver.find_element_by_class_name('password').send_keys(pwd)
driver.find_element_by_class_name('password').send_keys(Keys.ENTER)
# 点击写信
driver.find_element_by_id('composebtn').click()
iframe = driver.find_element_by_id('mainFrame')
driver.switch_to.frame(iframe)
# 输入收件人、主题信息
driver.find_element_by_xpath('//*[@id="toAreaCtrl"]/div[2]/input').send_keys(to)
driver.find_element_by_xpath('//*[@id="subject"]').send_keys(theme) # 遇到body iframe
iframe_body = driver.find_element_by_class_name('qmEditorIfrmEditArea')
driver.switch_to.frame(iframe_body)
# 输入文本
driver.find_element_by_tag_name('body').send_keys(content)
# 切出body iframe
driver.switch_to.default_content()
driver.switch_to.frame(iframe)
# 点击发送按钮
driver.find_element_by_xpath('//*[@id="toolbar"]/div/a[1]').click()
# time.sleep()
# driver.quit() if __name__ == '__main__':
to = '' # 你想发的邮箱
theme = 'python自动发送邮件'
content = '不用回,我就试试,哈哈哈。'
user = '' # QQ账号
pwd = getpass('密码:') # QQ密码 # 创建 option 对象
option = ChromeOptions()
option.add_experimental_option('excludeSwitches', ['enable-automation'])
# 创建浏览器对象
driver = webdriver.Chrome(options=option)
  '''
  driver = webdriver.Chrome(executable_path=r'E:\chromedriver.exe')
  '''
driver.implicitly_wait()
run()

python+selenium 发送邮件的更多相关文章

  1. python+selenium 自动化测试实战

    一.前言: 之前的文章说过, 要写一篇自动化实战的文章, 这段时间比较忙再加回家过11一直没有更新博客,今天整理一下实战项目的代码共大家学习.(注:项目是针对我们公司内部系统的测试,只能内部网络访问, ...

  2. web自动化 基于python+Selenium+PHP+Ftp实现的轻量级web自动化测试框架

    基于python+Selenium+PHP+Ftp实现的轻量级web自动化测试框架   by:授客 QQ:1033553122     博客:http://blog.sina.com.cn/ishou ...

  3. python+selenium封装UI自动化框架

    seleinum框架 框架的思想:  解决我们测试过程中的问题:大量的重复步骤,用自动化来实现    1)配置和程序的分离    2)测试数据和程序的分离    3)不懂编程的人员可以方便使用:使用的 ...

  4. python+selenium 浏览器的问题

    以前用selenium调用firefox是不需要驱动的,最近安装了python3.52+最新的firefox 发现调不起来了 搜索以后发现Firefox 47+需要搞个firefox的驱动 gecko ...

  5. 一次完整的自动化登录测试-基于python+selenium进行cnblog的自动化登录测试

    Web登录测试是很常见的测试!手动测试大家再熟悉不过了,那如何进行自动化登录测试呢!本文作者就用python+selenium结合unittest单元测试框架来进行一次简单但比较完整的cnblog自动 ...

  6. Python + Selenium 实现登录Office 365

    最近捡起之前用的Python + Selenium实现工作中需要的登录Office 365功能.(吐槽:国内网络真是卡,登录Office 365实属不易.另外Selenium这样的网站都要墙,无法理解 ...

  7. python+selenium+Robot

    准备工作: 1.下载python2.7 http://python.org/getit/ 2.下载下载setuptools [python 的基础包工具] 可以帮助我们轻松的下载,构建,安装,升级,卸 ...

  8. python+selenium运行报错UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-1: ordinal not in range(128)

    使用python+selenium运行自动化脚本时,打印某一段文字出现UnicodeEncodeError: 'ascii' codec can't encode characters in posi ...

  9. Functional testing - python, selenium and django

    Functional testing  - python selenium django - Source Code : from selenium import webdriverfrom sele ...

随机推荐

  1. eclipse安装SVN插件的两种方法

    eclipse里安装SVN插件,一般来说,有两种方式: 直接下载SVN插件,将其解压到eclipse的对应目录里 使用eclipse 里Help菜单的“Install New Software”,通过 ...

  2. 关于syx的npy

    请认准官方女友----- STL 任何人在不得syx同意下不能传播其它谣言

  3. extract()和extact_first()的区别

    extract()和extact_first()都是提取Selector的data部分.但现在你要先知道什么是Selector. Selector是选择器的意思.具体定义我不知道,但通过下面的例子,你 ...

  4. javac导出参考文档报错 错误: 编码GBK的不可映射字符”

  5. JAVA虚拟机:对象的创建

    在虚拟机中,当遇到需要new一个对象时,虚拟机首先会去处于方法区的常量池中查找new指令的参数,即查找此类的符号引用是否已存在,并且检查此符号引用的代表类是否已经做过加载.解析和初始化,如果做过则不会 ...

  6. GetHub上很实用的几个Demo

    手机号匹配的正则表达式:https://github.com/VincentSit/ChinaMobilePhoneNumberRegex/blob/master/README-CN.md FEBS- ...

  7. 转《Python爬虫学习系列教程》学习笔记

    http://www.cnblogs.com/xin-xin/p/4297852.html

  8. PAT (Advanced Level) 1144~1147:1145Hash二次探查 1146拓扑排序 1147堆

    1144 The Missing Number(20 分) 题意:给定N个数的序列,输出不在序列中的最小的正整数. 分析: 1.给定的N个数可能为正,可能为负,可能重复. 2.由于N≤10​5​​,所 ...

  9. stm32CubeMx CAN 发送数据

    平台  STM32F429 软件  STM32CubeMx 5.0.0 固件库  STM32Cube_FW_F4_V1.23.0 目的: 实现 CAN 的发送 一  简介 CAN是控制器局域网络(Co ...

  10. Kubernetes——命令行操作

    如果集群初始化失败需要的操作: master:  kubeadm reset   #回答y  执行一条它提示给你的iptables命令即可 node:  systemctl stop kubelet  ...