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属性. 代码如下: ----------------------------------------------------------------------- ...
随机推荐
- 【Vue实例生命周期】
目录 实例创建之前执行--beforeCreate 实例创建之后执行--created 挂载之前执行--beforeMount 挂载之后执行--mounted 数据更新之前执行--beforeUpda ...
- 空指针异常与Optional类
一.什么是空指针异常 当程序需要对象实例的时候返回null就会抛出空指针异常(NullPointerException,简称NPE).包括以下情况: 调用一个null对象实例的方法 访问或修饰null ...
- Vue-cli 多页相关配置记录
Vue-cli 多页相关配置记录 搭建一个顺手的MPA项目脚手架,其实根据项目的不同目录结构和打包配置都可以进行灵活的调整.这次的项目可能是包含各种客户端和管理后台在一起的综合项目所以需要将样式和脚本 ...
- NTP网络授时服务器部署及网络时钟同步设置说明
NTP网络授时服务器部署及网络时钟同步设置说明 NTP网络授时服务器部署及网络时钟同步设置说明 本文由安徽京准科技提供@请勿转载. 一.前言 1.NTP简介 NTP是网络时间协议(Network T ...
- pipreqs (找当前项目依赖的包)
pipreqs pipreqs可以帮你找到当前项目的所有组件及其版本.就是当别人给你一个程序的时候,你要在自己电脑上运行起来,就需要安装程序所依赖的组件,总不能自己一个一个找吧. # 安装 pip3 ...
- 解决tensorflow Saver.restore()无效的问题
解决tensorflow 的 Saver.restore()无法从本地读取变量的问题 最近做tensorflow 手写数字识别的时候遇到了一个问题,Saver的restore()方法无法从本地恢复变量 ...
- redis 字符串操作
redis 字符串创建SET操作 127.0.0.1:6379> set number "10086" OK 127.0.0.1:6379> set book &quo ...
- element 确认框 confirm 的写法
this.confirm('内容', '标题', { confirmButtonText: '确定', cancelButtonText: '取消', type: 'success', callbac ...
- 从0到1了解 CI/CD
现代软件开发的需求加上部署到不同基础设施的复杂性使得创建应用程序成为一个繁琐的过程.当应用程序出现规模性增长,开发团队人员变得更分散时,快速且不断地生产和发布软件的流程将会变得更加困难.为了解决这些问 ...
- leetcode929 Unique Email Addresses
Every email consists of a local name and a domain name, separated by the @ sign. For example, in ali ...