python自动化登录163邮箱发送邮件

记录第一次自动化发送邮件成功

  • 第一步 准备好 HTMLTestRunner.py文件放在下面这个路径

python自动化登录163邮箱发送邮件_第1张图片在这里插入图片描述

  • 第二步 创建 “Mail163.yaml” 存放信息
testURL:  'http://mail.163.com'
user1:
  username: 'xxx'
  password: 'xxx'

user2:
  username: 'xxx'
  password: 'xxxxx'
  • 第三步 创建登录和退出方法 alldriver.py
from selenium import webdriver
from time import sleep


class Mail:
    """定义一个driver"""
    def __init__(self, driver):
        self.driver = driver

    """登录方法"""
    def login(self, username, password):
        """使用用户名和密码登录"""
        self.driver.find_element_by_id("switchAccountLogin").click()
        """为了避免切换界面后,找不到元素,先等待两秒"""
        sleep(2)
        """先定位到登录用户名和密码框所在的frame"""
        iframe = self.driver.find_element_by_xpath("//div[@id='loginDiv']/iframe")
        """定位到frame之后,切换至frame"""
        self.driver.switch_to.frame(iframe)
        """定位用户名输入框之后,清空输入框,输入用户名"""
        self.driver.find_element_by_name("email").clear()
        self.driver.find_element_by_name("email").send_keys(username)
        """定位用户名输入框之后,清空输入框,输入用户名"""
        self.driver.find_element_by_name("password").clear()
        self.driver.find_element_by_name("password").send_keys(password)
        """点击登录按钮"""
        self.driver.find_element_by_id("dologin").click()
        self.driver.switch_to_default_content()  # 跳出frame,回到主页面


    """退出方法"""
    def logout(self):
        """点击退出按钮"""
        self.driver.find_element_by_link_text('退出').click()

  • 第四步 调用yaml文件登录邮箱,并发送邮件 smokeCase.py
import unittest
from time import sleep
from selenium import webdriver
import yaml

from mail.alldriver import Mail

global driver
driver = webdriver.Firefox()
mail1 = Mail(driver)
"""定义全局变量dic"""
global dic
"""读取文件"""
f = open(r'Mail163.yaml', encoding='utf-8')
cont = f.read()
dic = yaml.load(cont, Loader=yaml.FullLoader)


class TestEmail(unittest.TestCase):
    """执行用例前执行一次"""

    @classmethod
    def setUpClass(cls):
        url = dic['testURL']
        username = dic['user1']['username']
        password = dic['user1']['password']
        print(url + username + password)
        driver.get(url)
        driver.maximize_window()
        mail1.login(username, password)

    def test_case1(self):
        sleep(3)
        u"""点击写信按钮"""

        driver.find_element_by_xpath("//*[@id='dvNavTop']/ul/li[2]/span[2]").click()  # 点击写信

        u"""定位并清空收件人,输入收件人"""
        editableAddr = driver.find_element_by_class_name('nui-editableAddr-ipt')
        editableAddr.clear()  # 清空收件人
        editableAddr.send_keys("[email protected]")
        sleep(2)

        u"""输入主题"""
        driver.find_element_by_xpath("//*[@class='nui-ipt-input'and @type = 'text' and @tabindex = '1']").send_keys(
            "测试发送邮件主题")

        u"""定位到写信的frame"""
        iframe = driver.find_element_by_xpath("//iframe[contains(@class,'APP-editor-iframe')]")
        driver.switch_to.frame(iframe)

        u"""输入邮件内容"""
        driver.find_element_by_class_name("nui-scroll").send_keys("你好,我给你发送了一个邮件,请注意查收!")
        """退出写信的frame"""
        driver.switch_to.default_content()


        u"""点击发送按钮"""
        driver.find_element_by_xpath("//*[@class='nui-toolbar-item']/div/span[2]").click()

    """所有用例执行完之后,执行一次"""

    @classmethod
    def tearDownClass(cls):
        sleep(2)
        mail1.logout()
        sleep(2)
        driver.quit()


if __name__ == "__main__":
    unittest.main(verbosity=2)
  • 最后一步 执行脚本 runCase.py
import unittest
from HTMLTestRunner import HTMLTestRunner

from mail.smokeCase import TestEmail

"""定义一个测试集suit, 包含smokeCase里的所有测试用例"""
suit = unittest.TestSuite()
suit.addTests(unittest.TestLoader().loadTestsFromTestCase(TestEmail))

"""HTMLTestRunner生成报告"""
if __name__ == '__main__':
    fp = open('./result.html', 'wb')  # 定义测试报告存放路径
    runner = HTMLTestRunner(stream=fp, title='163邮箱登陆测试报告', description='用例执行情况')  # 定义测试报告
    runner.run(suit)  # 执行测试用例
    fp.close()
  • 大功告成,生成result.html 测试报告
    python自动化登录163邮箱发送邮件_第2张图片

你可能感兴趣的:(测试)