web项目的登录窗口的测试

Posted excellent_1

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了web项目的登录窗口的测试相关的知识,希望对你有一定的参考价值。

今天咱们继续接上上一篇所讲,开始用项目来练手:给出以下图:

 测这个登录窗口:其实比较好测,拿最简单容易想到的,就是什么账号密码均正确;账号为空;密码为空;账号密码均不正确等等,那么我们怎么来用selenium来实现呢?

import unittest
from selenium.webdriver import Chrome
from selenium.webdriver.common.by import By
class TestLogin(unittest.TestCase):

    def setUp(self):
        """登录的前置:启动浏览器,访问登录页面"""
        self.driver = Chrome()
        self.driver.implicitly_wait(10)
        # 打开前程贷的登录页面
        self.driver.get("http://8.129.91.152:8765/Index/login.html")

    def test_login_pass(self):
        """登录成功"""
        # 输入账号
        self.driver.find_element(By.XPATH, \'//input[@placeholder="手机号"]\').send_keys(\'18684720553\')
        # 输入密码
        self.driver.find_element(By.XPATH, \'//input[@placeholder="密码"]\').send_keys(\'python\')
        # 点击登录
        self.driver.find_element(By.XPATH, "//button[text()=\'登录\']").click()
        # 断言是否成功
        try:
            ele = self.driver.find_element(By.XPATH, \'//a[text()="我的帐户[python]"]\')
        except:
            ele = False
        self.assertTrue(ele)def test_login_pwd_is_none(self):
        """密码为空"""
        # 输入账号和密码
        self.driver.find_element(By.XPATH, \'//input[@placeholder="手机号"]\').send_keys(\'18684720553\')
        self.driver.find_element(By.XPATH, \'//input[@placeholder="密码"]\').send_keys(\'\')
        # 点击登录
        self.driver.find_element(By.XPATH, "//button[text()=\'登录\']").click()
        # 断言是否成功
        excepted = "请输入密码"
        # 获取报错信息的文本
        res = self.driver.find_element(By.XPATH, \'//div[@class="form-error-info"]\').text
        self.assertEqual(excepted, res)

    def test_login_phone_is_none(self):
        """手机号为空"""
        # 输入账号和密码
        self.driver.find_element(By.XPATH, \'//input[@placeholder="手机号"]\').send_keys(\'\')
        self.driver.find_element(By.XPATH, \'//input[@placeholder="密码"]\').send_keys(\'python\')
        # 点击登录
        self.driver.find_element(By.XPATH, "//button[text()=\'登录\']").click()
        # 断言是否成功
        excepted = "请输入手机号"
        # 获取报错信息的文本
        res = self.driver.find_element(By.XPATH, \'//div[@class="form-error-info"]\').text
        self.assertEqual(excepted, res)

一开始简单的列出了三种场景,也能跑通,但是,有个问题,下面两个方法好像差不多,咱们能不能优化一下呢?

 如何优化?附上代码,并截图解析

import unittest
from selenium.webdriver import Chrome
from selenium.webdriver.common.by import By
from unittestreport import ddt, list_data

login_data_is_none = [
    {"title": "密码为空", "phone": "18684720553", "pwd": "", "expected": "请输入密码"},
    {"title": "手机号为空", "phone": "", "pwd": "python", "expected": "请输入手机号"},
]

@ddt
class TestLogin(unittest.TestCase):

    def setUp(self):
        """登录的前置:启动浏览器,访问登录页面"""
        self.driver = Chrome()
        self.driver.implicitly_wait(10)
        # 打开前程贷的登录页面
        self.driver.get("http://8.129.91.152:8765/Index/login.html")

    def test_login_pass(self):
        """登录成功"""
        # 输入账号
        self.driver.find_element(By.XPATH, \'//input[@placeholder="手机号"]\').send_keys(\'18684720553\')
        # 输入密码
        self.driver.find_element(By.XPATH, \'//input[@placeholder="密码"]\').send_keys(\'python\')
        # 点击登录
        self.driver.find_element(By.XPATH, "//button[text()=\'登录\']").click()
        # 断言是否成功
        try:
            ele = self.driver.find_element(By.XPATH, \'//a[text()="我的帐户[python]"]\')
        except:
            ele = False
        self.assertTrue(ele)

    @list_data(login_data_is_none)
    def test_login_data_is_none(self, case):
        # 输入账号和密码
        self.driver.find_element(By.XPATH, \'//input[@placeholder="手机号"]\').send_keys(case[\'phone\'])
        self.driver.find_element(By.XPATH, \'//input[@placeholder="密码"]\').send_keys(case[\'pwd\'])
        # 点击登录
        self.driver.find_element(By.XPATH, "//button[text()=\'登录\']").click()
        # 断言是否成功
        expected = case["expected"]
        # 获取报错信息的文本
        res = self.driver.find_element(By.XPATH, \'//div[@class="form-error-info"]\').text
        self.assertEqual(expected, res)

 然后运行run.py文件,也可以跑的通

 然后,这个登录有一个场景,就是账号不存在时,会给出toast弹窗提示,这种的又如何来展开呢?

未完待续。。。。。。。。。。。。。。。。。

 

以上是关于web项目的登录窗口的测试的主要内容,如果未能解决你的问题,请参考以下文章

PHP必用代码片段

JavaFX自定义窗口标题栏

;~ 小部分AutoHotkey源代码片段测试模板2019年10月9日.ahk

Express实战 - 应用案例- realworld-API - 路由设计 - mongoose - 数据验证 - 密码加密 - 登录接口 - 身份认证 - token - 增删改查API(代码片段

Web项目设计与开发 ——————DBHelper测试

项目测试心得