自动化测试-数据驱动实践(126发邮件)

测试需求:
自动登录126邮箱,选择收件人,输入主题,输入正文,上传附件,发送

代码:

#encoding=utf-8
import time
import unittest
from selenium import webdriver
from selenium.common.exceptions import TimeoutException

class login163MailByIe(unittest.TestCase):
    def setUp(self):
        #启动浏览器
        self.driver = webdriver.Ie(executable_path = "D:\\IEDriverServer")
    def test_login_sendMail(self):
        url = "http://mail.163.com"
        #设置页面加载限制时间为10秒
        self.driver.set_page_load_timeout(10)
        #窗口最大化
        self.driver.maximize_window()
        try:
            stime = time.time()
            #访问163首页
            self.driver.get(url)
        except TimeoutException,e:
            print u"页面加载超过设定时间,超时"
            #当页面加载时间超过设定时间,通过执行javascript来停止加载,然后继续执行后续动作
            self.driver.execute_script("window.stop()")
        end = time.time() - stime
        print end
        #点击切换成账号密码登录
        self.driver.find_element_by_xpath('//div[@id="lbNormal"]').click()
        #找到并切换进iframe控件
        # 目前126和163登录的iframe的id也是动态变化,所以不能用id定位iframe
        #使用各种xpath定位表达式,在浏览器中可以成功定位,但Pycharm中一直报错(NoSuchElementException),只成功过执行一次
        iframe = self.driver.find_element_by_xpath('//iframe[contains(@id,"x-URS-iframe")]')
        self.driver.switch_to.frame(iframe)

        #获取用户名输入框
        userName = self.driver.find_element_by_xpath("//input[@name='email']")
        userName.clear()
        userName.send_keys("xxx")
        #获取密码输入框
        pwd = self.driver.find_element_by_xpath("//input[@name='password']")
        #输入密码
        pwd.send_keys("xxx")
        #点击登录按钮
        self.driver.find_element_by_id("dologin").click()
        time.sleep(2)
        # 断言登录成功
        self.assertTrue(u"退出" in self.driver.page_source)
        #找到“写信”按钮
        writeBtn = self.driver.find_element_by_xpath('//span[text()="写 信"]')
        #点击“写信”按钮
        writeBtn.click()
        #找到收件人输入框
        recipient = self.driver.find_element_by_xpath('//input[@aria-label="收件人地址输入框,请输入邮件地址,多人时地址请以分号隔开"]')
        #输入收件人邮箱
        recipient.send_keys("124840093@qq.com")
        #找到主题输入框
        subject = self.driver.find_element_by_xpath('//input[contains(@id,"_subjectInput")]')
        #输入邮件主题
        subject.send_keys(u"测试发送邮件")
        #找到上传附件按钮
        fileBtn = self.driver.find_element_by_xpath('//input[@type="file"]')
        #选择目标文件
        fileBtn.send_keys("D:\\test\\test.txt")
        #正文富文本杠在一个iframe里面,先定位iframe,进入iframe后再定位富文本框
        #找到iframe并进入
        self.driver.switch_to.frame(self.driver.find_element_by_xpath('//iframe[@tabindex="1"]'))
        #找到富文本框并输入内容
        self.driver.execute_script("document.getElementsByTagName('body')[0].innerHTML='<b>邮件正文内容</b>;'")
        #进入iframe后,需要退出
        self.driver.switch_to.default_content()
        #找到发送按钮
        sendBtn = self.driver.find_element_by_xpath('//footer//span[text()="发送"]')
        #点击发送按钮
        sendBtn.click()
        time.sleep(5)
        #断言发送成功
        assert u"发送成功" in self.driver.page_source

    def tearDown(self):
        self.driver.quit()

if __name__ == "__main__":
    unittest.main()

 

posted @ 2019-06-03 09:44  测试小子  阅读(475)  评论(0编辑  收藏  举报