zoukankan      html  css  js  c++  java
  • Selenium+webdriver自动化登陆QQ邮箱并发送邮件

    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:Users11474Desktop2019年下半年英语四级笔试准考证(王龙).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()

    运行结果要录屏就不发了。

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

  • 相关阅读:
    Magento入门开发教程
    Magento文件系统目录结构
    正则匹配获取HTML图片地址,正则匹配获取HTML内容
    php+phpspreadsheet读取Excel数据存入mysql
    PHP遍历一个文件夹下所有文件和子文件夹的函数
    前端实现在线预览pdf、word、xls、ppt等文件
    微服务架构的基础框架选择
    Linux性能优化实战学习笔记:第五十八讲
    Linux性能优化实战学习笔记:第五十六讲
    Linux性能优化实战学习笔记:第五十五讲
  • 原文地址:https://www.cnblogs.com/ngxt/p/12073320.html
Copyright © 2011-2022 走看看