今天咱們繼續接上上一篇所講,開始用項目來練手:給出以下圖:
測這個登錄窗口:其實比較好測,拿最簡單容易想到的,就是什麼賬號密碼均正確;賬號爲空;密碼爲空;賬號密碼均不正確等等,那麼我們怎麼來用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彈窗提示,這種的又如何來展開呢?
未完待續。。。。。。。。。。。。。。。。。