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彈窗提示,這種的又如何來展開呢?

未完待續。。。。。。。。。。。。。。。。。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章