#!/usr/bin/env python
# -*- coding: utf-8 -*-
"""
@desc:       测试126邮箱的登陆功能
1.使用公共方法public.login
2.将测试数据放在xml文件中,使用数据驱动(/test_data/login.xml)
3.这里使用xml.dom.minidom读取xml数据
"""
import unittest
import xml.dom.minidom
import os
import sys
from selenium import webdriver

cur_dir = os.getcwd()
sys.path.append(cur_dir.split(r'\test_case')[0])

from public import login

fpath = cur_dir.split('test_case')[0] + 'test_data' + os.path.sep + 'login.xml'

# 打开 xml 文档
dom = xml.dom.minidom.parse(fpath)

# 得到文档元素对象
root = dom.documentElement

class TestLogin(unittest.TestCase):
    def setUp(self):
        self.driver = webdriver.Firefox()
        self.driver.implicitly_wait(30)
        logins = root.getElementsByTagName('url')
        self.base_url = logins[0].firstChild.data
        self.verificationErrors = []

    # 用例1:用户名、密码为空
    def test_null(self):
        driver = self.driver
        driver.get(self.base_url)
        # 读取xml中的数据
        logins = root.getElementsByTagName('null')
        # 获得 null 标签的 username、password 属性值
        username = logins[0].getAttribute("username")
        password = logins[0].getAttribute("password")
        prompt_info = logins[0].firstChild.data
        # 登录
        login.login(self, username, password)
        # 获取断言信息进行断言
        text = driver.find_element_by_xpath("//div[@class='error-tt']/p").text
        self.assertEqual(text, prompt_info)

    # 用例2:用户名为空
    def test_user_null(self):
        driver = self.driver
        driver.get(self.base_url)
        logins = root.getElementsByTagName('user_null')
        # 获得 user_null 标签的 username、passwrod 属性值
        username = logins[0].getAttribute("username")
        password = logins[0].getAttribute("password")
        prompt_info = logins[0].firstChild.data
        # 登录
        login.login(self, username, password)
        # 获取断言信息进行断言
        text = driver.find_element_by_xpath("//div[@class='error-tt']/p").text
        self.assertEqual(text, prompt_info)

    # 用例3:密码为空
    def test_pwd_null(self):
        driver = self.driver
        driver.get(self.base_url)
        logins = root.getElementsByTagName('pwd_null')
        # 获得 pwd_null 标签的 username、passwrod 属性值
        username = logins[0].getAttribute("username")
        password = logins[0].getAttribute("password")
        prompt_info = logins[0].firstChild.data
        # 登录
        login.login(self, username, password)
        # 获取断言信息进行断言
        text = driver.find_element_by_xpath("//div[@class='error-tt']/p").text
        self.assertEqual(text, prompt_info)

    # 用例4:错误的用户名和密码
    def test_error(self):
        driver = self.driver
        driver.get(self.base_url)
        logins = root.getElementsByTagName('error')
        # 获得 error 标签的 username、passwrod 属性值
        username = logins[0].getAttribute("username")
        password = logins[0].getAttribute("password")
        prompt_info = logins[0].firstChild.data
        # 登录
        login.login(self, username, password)
        # 获取断言信息进行断言
        text = driver.find_element_by_xpath("//div[@class='error-tt']/p").text
        self.assertEqual(text, prompt_info)

    def tearDown(self):
        self.driver.quit()
        self.assertEqual([], self.verificationErrors)

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

selenium+python笔记7的更多相关文章

  1. selenium+python笔记11

    #!/usr/bin/env python # -*- coding: utf-8 -*- """ @desc: search in mail box "&qu ...

  2. selenium+python笔记10

    #!/usr/bin/env python # -*- coding: utf-8 -*- """ 我们多添加一些测试场景,比如:删除邮件,查找邮件,发送邮件等等 &qu ...

  3. selenium+python笔记9

    #!/usr/bin/env python # -*- coding: utf-8 -*- """ @desc: delete mail 我们多添加一些测试场景,比如:删 ...

  4. selenium+python笔记8

    #!/usr/bin/env python # -*- coding: utf-8 -*- """ @desc: 定制浏览器 """ imp ...

  5. selenium+python笔记6

    #!/usr/bin/env python # -*- coding: utf-8 -*- """ @desc: 将登陆动作封装成function "" ...

  6. selenium+python笔记5

    #!/usr/bin/env python # -*- coding: utf-8 -*- """ @desc: 登陆126邮箱 """ f ...

  7. selenium+python笔记4

    #!/usr/bin/env python # -*- coding: utf-8 -*- """ @desc: 使用unittest组织用例 ""& ...

  8. selenium+python笔记3

    #!/usr/bin/env python # -*- coding: utf-8 -*- """ @desc:学习unittest的用法 注意setUp/setUpCl ...

  9. selenium+python笔记2

    #!/usr/bin/env python # -*- coding: utf-8 -*- """ @desc: 操作浏览器 """ fro ...

随机推荐

  1. swift项目导入OC框架

    手动导入框架步骤: 1.将框架拖入项目 2.新建桥接文件 3.build setting->bridge  添加桥接文件路径,相对项目而言

  2. Can't load IA 32-bit .dll on a AMD 64-bit platform错误的解决

    64位的系统,64位的myeclipse,64位的jdk,64位的tomcat,结果报错:Can't load IA 64-bit .dll on a AMD 32-bit platform,简直无语 ...

  3. SSI指令

    1.SSI定义 SSI是英文Server Side Includes的缩写, 即“服务器端包含”或“服务器端嵌入”技术. SSI在HTML文件中,可以通过注释行调用的命令或指针,是一种基于服务器端的网 ...

  4. RMAN 前期准备工作和实例

    理解恢复目录,RMAN可以在没有恢复目录(NOCATALOG)下运行,这个时候备份信息保存在控制文件.保存在控制文件的备份信息是很危险的,如果控制文件的破坏将导致备份信息的丢失与恢复的失败,而且,没有 ...

  5. lame边录音边转换

    文章出处:http://big-joe.blog.sohu.com/88902836.html void CViewTFreqList::RecFileInit(LPCTSTR sFileName,  ...

  6. css 九宫格

    http://jsfiddle.net/webtiki/kQXkt/ http://jsfiddle.net/webtiki/MpXYr/3/embedded/ https://www.web-tin ...

  7. 6、UITableView表的分割线左对齐

    //分割线左对齐 -(void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtI ...

  8. Javascript系列: Google Chrome调试js代码(zz)

    你 是怎么调试 JavaScript 程序的?最原始的方法是用 alert() 在页面上打印内容,稍微改进一点的方法是用 console.log() 在 JavaScript 控制台上输出内容.嗯~, ...

  9. 客户端服务端通信protocol

    这个协议不知我在上面耗费了多长时间,也有人问过我咋回事,这个protocol不长,但对于我来说理解起来很费劲,今天回来看看忽然看懂了(80%),只能说不知看了多少遍 其实这些东西应该在来的一个月这样子 ...

  10. Base64编解码(C++版)

    #include <string> using namespace std; class ZBase64 { public:     /*编码     DataByte         [ ...