• 自动化测试-数据驱动实践(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()
  • 相关阅读:
    [斜率优化][DP]luogu P3648 序列分割
    [状压DP]luogu P1879 玉米田
    [最短路][期望DP]luogu P1850 换教室
    [DP]JZOJ 3046 游戏
    [组合数学]JZOJ 3013 填充棋盘
    [贪心]JZOJ 3012 购买
    [最大流][二分]JZOJ 1259 牛棚
    [数学][构造]JZOJ 3317 管道
    Cookie和Session
    XSS和CSRF的理解
  • 原文地址:https://www.cnblogs.com/test-chen/p/10965891.html
Copyright © 2020-2023  润新知