1.关于selenium

 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邮箱并发送邮件的更多相关文章

  1. Python+selenium自动循环扔QQ邮箱漂流瓶

    Python代码如下: # coding=utf-8 from selenium import webdriver from time import sleep from random import ...

  2. C#如何利用QQ邮箱SMTP发送邮件

    public void SendEmail() { MailMessage msg = new MailMessage(); msg.To.Add("to@qq.com");//收 ...

  3. 用JavaMail通过QQ邮箱来发送邮件(第一篇博客,备忘)

    1.先启用QQ邮箱里POP3/STMP服务:生成授权码 2.导入mail.jar包(不要用太古董的技术,你懂得) 3.注意要在代码里加上开启SSL加密的代码 4.直接上代码 import java.u ...

  4. MY_使用selenium自动登录126/163邮箱并发送邮件

    转自:https://www.cnblogs.com/yin-tao/p/7244082.html 我使用的是python2.7.13+selenium ps:几天之前,我曾多次尝试写这段代码,但是在 ...

  5. python QQ邮箱自动发送邮件

    于初学者来讲在写发送邮件代码时常见的错误有SMTPAuthenticationError535,有点懵逼,检查用户名,密码正确就是报错, 想当年笔者也是这么过来的,现在就给大家分享一下个人经验: 一, ...

  6. selenium登陆qq邮箱页面

    from selenium import webdriver driver = webdriver.Chrome() driver.get('https://mail.qq.com/cgi-bin/l ...

  7. python3 通过qq邮箱定时发送邮件

    下面的代码为了每天定时发送监控邮件,监控什么呢?监控当天redis队列中是否有没有消费的数据,和当天mysql中新增的数据量 # -*- coding:utf-8 -*- from common.re ...

  8. 使用Python登陆QQ邮箱发送垃圾邮件 简单实现

    参考:Python爱好者 知乎文章 需要做的是: 1.邮箱开启SMTP功能 2.获取授权码 上述两步百度都有. 源码: #!/usr/bin/env python from email.mime.te ...

  9. selenium webdriver自动化对日期控件的处理

    用JS去掉日期输入框的readOnly属性. 代码如下: ----------------------------------------------------------------------- ...

随机推荐

  1. c# 异常:值不能为 null。 参数名: source

    异常详细信息: System.ArgumentNullException: 值不能为 null.参数名: source 其实问题那就出在 Select() 方法,在 Select 上按 F12 查看定 ...

  2. 松软科技Web课堂:JavaScript HTML DOM 动画

    基础页面 为了演示如何通过 JavaScript 来创建 HTML 动画,我们将使用一张简单的网页: 实例 <!DOCTYPE html> <html> <body> ...

  3. JS高级---三种创建对象的方式

    JS高级---三种创建对象的方式 字面量的方式 (实例对象) 调用系统的构造函数 自定义构造函数方式 //创建对象---->实例化一个对象,的同时对属性进行初始化 var per=new Per ...

  4. 占位符 css

    == 普通的英文半角空格   ==   ==   == no-break space (普通的英文半角空格但不换行)   == 中文全角空格 (一个中文宽度)   ==   == en空格 (半个中文 ...

  5. CF-----Pillars

    . Pillars There are n pillars aligned in a row and numbered from 1 to n. Initially each pillar conta ...

  6. 吴裕雄 PYTHON 人工智能——基于MASK_RCNN目标检测(5)

    import os import sys import numpy as np import tensorflow as tf import matplotlib import matplotlib. ...

  7. Tiny-shell

    Tiny-shell:一个模仿bash的极简shell (一) 概述 通过构建一个简单的shell,能够对shell的工作原理进行一些了解.主要有: 重定向 流水线 前台信号处理 进程组 后台进程 作 ...

  8. jmeter beanshell 使用参数引用

    1.直接使用beanshell 写代码引用: 2. beanshell  引用.java 文件 3.beanshell 引用jar 包

  9. 150元搭建微型家庭服务器(支持DLAN,samda,aria2)

    概览 看到有人用树莓派搭家庭服务器,感觉太不值了,300块都可以搭一台性能还可以的低功耗x86主机了,我搭一个100块顶多的服务器玩玩. 0.Linux服务器学习(比虚拟机双系统舒服多了) 1.流媒体 ...

  10. uniGUI之UniPopupMenu和右键菜单(27)

    0]MainModule的BrowserOptions.boDisableMouseRightClick设置为Trure; 1]控件的OnCellContextClick的事件 procedure T ...