Selenium+webdriver自动化登陆QQ邮箱并发送邮件
1.关于selenium
(1)测试与浏览器的兼容性:测试应用程序能否兼容工作在不同浏览器和操作系统之上。
(2)测试系统功能:录制用例自动生成测试脚本,用于回归功能测试或者系统用例说明。
简而言之,Selenium 就是一款可以录制用户操作, 帮助Web测试人员简化重复劳动的工具。
2.selenium安装
win+r,进入cmd,

然后输入pip install selenium,等一会就安装好了。
3.webdriver原理
WebDriver是按照Server-Client的模式设计的。
Server就是Remote Server, 可以是任意的浏览器。当我们的脚本启动浏览器后,该浏览器就是Remote Server,她的职责就是等待Client发送请求并做出响应。
Client端简单说就是我们写的测试脚本。脚本中的一些行为比如打开浏览器,跳转到指定的URL等操作就是以http请求的方式发送给被测试的浏览器,也就是Remote Server. Remote Server接受请求,执行相应操作,并在Response中返回执行状态、返回值等信息。
4.下载安装webdriver
Webdriver下载路径:
http:// chromedriver. storage. googleapis. com/ index. html,用于驱动打开Chrome;
geckodriver下载路径: https:// github. com/ moz illa/ geckodriver/releeases,用于驱动打开Firefox;
下载后放在python. exe相同目录下( 我用的是谷歌浏览器,所以就下载的chromedriver) :

5.测试是否可用

出现了下面的结果,说明我们做好了准备工作,可以开始自动化了。

6.要做到自动化,我们就需要模仿鼠标和键盘的操作,我这里只用到了一些简单的操作:

7.自动化在操作之前,要找到进行操作的位子,我可以根据网页源代码的标签去找(标签的属性最好是唯一的)。
find_element _by_ id(a) #定位id=‘a’的地方
find_element_by_ name (a) #定位name=‘a'的地方
find_element_by_ class_name (a) #定位class=‘a’的地方
find_element_ by_ xpath()
find_element_ by_ css_ selector()
find_element_ by_ tag_ name ()
find_element_ by_ link_text() #定位文本链接的
find_element_by_ partial_link_text() #和上面的一样,但我们可只截取链接的一部分
8.运行程序的全代码
from selenium import webdriver
import time first_url = 'http://www.mail.qq.com'
driver = webdriver.Chrome()
driver.get(first_url)
driver.implicitly_wait(3)
driver.maximize_window() #切换到iframe
time.sleep(3)
driver.switch_to.frame(driver.find_element_by_id('login_frame'))
time.sleep(3) #点击头像进行登录
driver.find_element_by_id('img_out_1147451366').click()
time.sleep(2)
#进入收件箱
driver.find_element_by_id('folder_1').click()
time.sleep(2)
#点击写信
driver.find_element_by_id('composebtn').click() time.sleep(3)
#切换到iframe
driver.switch_to.frame(driver.find_element_by_id('mainFrame')) #输入收件人
driver.find_element_by_xpath("//*[@id='toAreaCtrl']/div[2]/input").send_keys('949709967@qq.com')
time.sleep(2)
#添加附件
driver.find_element_by_name('UploadFile').send_keys(r'C:\Users\11474\Desktop\2019年下半年英语四级笔试准考证(王龙).zip') #输入正文,先切入到iframe
driver.switch_to_frame(driver.find_element_by_class_name('qmEditorIfrmEditArea'))
time.sleep(3)
#输入正文
driver.find_element_by_xpath("ml/body").send_keys('小哥哥,爱你哟')
time.sleep(3)
#切出iframe
driver.switch_to_default_content() #再切入到‘发送’按钮的iframe
driver.switch_to.frame(driver.find_element_by_id('mainFrame'))
time.sleep(3)
#邮件发送 driver.find_element_by_name('sendbtn').click()
运行结果要录屏就不发了。

------------恢复内容结束------------

Selenium+webdriver自动化登陆QQ邮箱并发送邮件的更多相关文章
- Python+selenium自动循环扔QQ邮箱漂流瓶
Python代码如下: # coding=utf-8 from selenium import webdriver from time import sleep from random import ...
- C#如何利用QQ邮箱SMTP发送邮件
public void SendEmail() { MailMessage msg = new MailMessage(); msg.To.Add("to@qq.com");//收 ...
- 用JavaMail通过QQ邮箱来发送邮件(第一篇博客,备忘)
1.先启用QQ邮箱里POP3/STMP服务:生成授权码 2.导入mail.jar包(不要用太古董的技术,你懂得) 3.注意要在代码里加上开启SSL加密的代码 4.直接上代码 import java.u ...
- MY_使用selenium自动登录126/163邮箱并发送邮件
转自:https://www.cnblogs.com/yin-tao/p/7244082.html 我使用的是python2.7.13+selenium ps:几天之前,我曾多次尝试写这段代码,但是在 ...
- python QQ邮箱自动发送邮件
于初学者来讲在写发送邮件代码时常见的错误有SMTPAuthenticationError535,有点懵逼,检查用户名,密码正确就是报错, 想当年笔者也是这么过来的,现在就给大家分享一下个人经验: 一, ...
- selenium登陆qq邮箱页面
from selenium import webdriver driver = webdriver.Chrome() driver.get('https://mail.qq.com/cgi-bin/l ...
- python3 通过qq邮箱定时发送邮件
下面的代码为了每天定时发送监控邮件,监控什么呢?监控当天redis队列中是否有没有消费的数据,和当天mysql中新增的数据量 # -*- coding:utf-8 -*- from common.re ...
- 使用Python登陆QQ邮箱发送垃圾邮件 简单实现
参考:Python爱好者 知乎文章 需要做的是: 1.邮箱开启SMTP功能 2.获取授权码 上述两步百度都有. 源码: #!/usr/bin/env python from email.mime.te ...
- selenium webdriver自动化对日期控件的处理
用JS去掉日期输入框的readOnly属性. 代码如下: ----------------------------------------------------------------------- ...
随机推荐
- pyqt中定时器的使用
1.定义一个定时器函数 # 定时器 from PyQt5.QtCore import QTimer def timer_start(): timer = QTimer() # fun1是监听的函数,如 ...
- Windows下配置Erlang环境
1.下载地址 http://www.erlang.org/downloads 2.下载文件 下载 OTP 22.2 Windows 64-bit Binary File 3.配置环境变量 将下载的安装 ...
- JavaScript自学笔记(1)---表单验证,let和const,JSON文件
今天开个JS自学笔记,本身JS的语法很简单,如果学过Java或者C系的都很容易,就不讨论了.主要是讨论实际应用的问题. 1.表单验证: a.html自动验证: HTML 表单验证可以通过浏览器来自动完 ...
- AngularJS Learning Notes
AngularJS 简介 AngularJS 是一个 JavaScript 框架.它可通过 <script> 标签添加到 HTML 页面. AngularJS 通过 指令 扩展了 HTML ...
- Spring的简单介绍
struts2:web层hibernate:dao层spring:service层 1 spring框架概述 1.1 什么是springSpring是一个开源框架,Spring是于2003 年兴起的一 ...
- Go语言内置包之strconv
文章引用自 Go语言内置包之strconv Go语言中strconv包实现了基本数据类型和其字符串表示的相互转换. strconv包 strconv包实现了基本数据类型与其字符串表示的转换,主要有以下 ...
- 2020年英特尔CPU供应短缺将持续
导读 有着相当靠谱的爆料历史的台媒 DigiTimes 报道称,其预计英特尔的 CPU 供应短缺问题,将持续到 2020 年末.对于这样的预测,我们其实早已见怪不怪,毕竟该公司首席执行官 Bob Sw ...
- CapsNet资源
算法源码: https://github.com/xanderchf/pyCapsNet https://github.com/naturomics/CapsNet-Tensorflow 参考文章: ...
- 使用JavaScript获取样式的属性值
1 . 在js中可以使用style属性来获取样式的属性值(只能获取内联样式的属性值) 语法格式为: HTML元素.style.样式属性; 2 . 在IE浏览器中,使用currentStyle来获取 ...
- python requests.request 和session.request区别究竟在哪里
import requests hd={"X-auth":"eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJzeXN0ZW0iLCJBUEkiOiIvdW ...