Selenium+webdriver自动化登陆QQ邮箱并发送邮件

1.关于selenium

 Selenium的主要功能包括:
(1)测试与浏览器的兼容性:测试应用程序能否兼容工作在不同浏览器和操作系统之上。
(2)测试系统功能:录制用例自动生成测试脚本,用于回归功能测试或者系统用例说明。
简而言之,Selenium 就是一款可以录制用户操作, 帮助Web测试人员简化重复劳动的工具。 

2.selenium安装

win+r,进入cmd,

Selenium+webdriver自动化登陆QQ邮箱并发送邮件_第1张图片

 

 

 然后输入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) :

Selenium+webdriver自动化登陆QQ邮箱并发送邮件_第2张图片

 

 

 5.测试是否可用

Selenium+webdriver自动化登陆QQ邮箱并发送邮件_第3张图片

 

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

 

 Selenium+webdriver自动化登陆QQ邮箱并发送邮件_第4张图片

 

 

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

Selenium+webdriver自动化登陆QQ邮箱并发送邮件_第5张图片

 

 

 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('[email protected]')
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邮箱并发送邮件)