python+selenium实现QQ邮箱自动发送功能
作者:知否,知否 发布时间:2021-11-11 22:03:58
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后面用“.”还是“_”符号,都可以将后面显示出来)。大家可以尝试下,把这句话省略,接着定位下面的元素。
主页面注意事项
主页面上左上角的“写信”按钮,你右击是不会显示查看元素的,第一种方法,我们首先在页面其他地方右击,接着选中查看元素,然后用查看器左边的那个鼠标按钮去点击“写信”按钮。就可以查看到。第二种方法,直接根据“写信”两个字去定位元素。我们可以这样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()
来源:https://blog.csdn.net/weixin_43992799/article/details/86082389


猜你喜欢
- 目录技术背景python对Excel表格的处理vaex的安装与使用vaex的安装性能对比数据格式转换总结概要技术背景数据处理是一个当下非常热
- Image模块Image模块是在Python PIL图像处理中常见的模块,对图像进行基础操作的功能基本都包含于此模块内。如ope
- 需要准备的工具:SQL Query Analyzer和SqlExec Sunx Version第一部分:去掉xp_cmdshell保护系统的
- 这篇文章主要介绍了Python hashlib加密模块常用方法解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价
- 本文实例讲述了php递归删除目录与文件的方法。分享给大家供大家参考。具体实现方法如下:<?phpfunction deldir($pa
- xpath表达式1. xpath语法<bookstore><book> <title lang="e
- 工作中遇到的,在一个.c文件中有很多函数,这个.c是自动生成的,需要将所有的函数通过extern放到.h中,每个函数都是UINT32 O_开
- 介绍观察者模式:是一种行为型设计模式。主要关注的是对象的责任,允许你定义一种订阅机制,可在对象事件发生时通知多个"观察"
- 从头讲讲编码的故事。那么就让我们找个草堆坐下,先抽口烟,看看夜晚天空上的银河,然后想一想要从哪里开始讲起。嗯,也许这样开始比较好……很久很久
- 最近在工作中涉及到判断服务器所在ip反馈程序使用情况的程序主要要求就是,本机或局域网调试程序时,不反馈其域名(localhost)或ip站长
- 仿windows选项卡或叫做tabpan以及tabpage,现在还有最新的进展譬如仿淘宝网导航菜单效果皆属于此类:运行代码框<scri
- Python综合应用——宿舍管理系统,供大家参考,具体内容如下/p>通过对 python 的函数,变量的应用,编写简单的关系系统实现功
- 利用百度词典进行中翻英import urllib2import reimport sysreload(sys)sys.setdefaulte
- 我的同事Fara给大家介绍了戴尔网站首页的改版设计,这里我还想和大家介绍一下戴尔是如何从网站用户使用体验的角度进行设计,让大家进一步了解戴尔
- 接着第一篇继续学习。一、数据分类正确数据:id、性别、活动时间三者都有放在这个文件里file1 = 'ruisi\\correct%
- 通过购物车的一个案列,把vuex学习了一篇。vuex概念浅谈Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式。它采用集中式存储
- 根据菜鸟教程Django教程学习,运行"python manage.py migrate" 报错,出现django.db
- 在进行爬虫爬取淘宝商品信息时候,利用selenium来模拟浏览器进行爬取时遇到了这个问题:selenium.common.exception
- python菜鸟,每天都要进步一点点。二维元组的例子:A = ((1, 1, 1), (1, 1, 1),(1, 1, 1),(0, 0,
- 目录项目地址所用到的技术开始编写爬虫项目地址https://github.com/aliyoge/fund_crawler_py所用到的技术