import unittest
from selenium import webdriver
from time import sleep
class LoginCase(unittest.TestCase):
def setUp(self):
self.dr=webdriver.Chrome()
self.dr.maximize_window()
def login(self,username,password):
self.dr.get('https://passport.cnblogs.com/user/signin')#cnblog登錄頁面
self.dr.find_element_by_id('input1').send_keys(username)
self.dr.find_element_by_id('input2').send_keys(password)
self.dr.find_element_by_id('signin').click()
def test_login_success(self):
'''用戶名、密碼正確'''
self.login('你很甜!','ccccc')
sleep(3)
link=self.dr.find_element_by_xpath('//*[@id="captchaBox"]/div/div[2]/div[1]/div[1]/div[1]')
#self.assertTrue('你很甜!' in link.text)#用assertTrue(x)方法來斷言bool(x) is True 登陸成功后用戶昵稱在link_curren_user里
self.dr.find_element_by_xpath("//*[@id=\"captchaBox\"]/div/div[3]").click()
self.dr.get_screenshot_as_file('D://cnblogtest//login_success.png')#截圖,可自定義截圖后的保存位置和圖片命名
def test_login_pwd_null(self):
'''用戶名正確,密碼不正確'''
self.login('xxx','111')
sleep(2)
error_message=self.dr.find_element_by_id('tip_btn').text
self.assertIn('用戶名或密碼錯誤',error_message)
self.dr.get_screenshot_as_file('D://cnblogtest//login_pwd_error.png')
def test_login_pwd_null(self):
'''用戶名正確,密碼為空'''
self.login('xxx','')
error_message=self.dr.find_element_by_id('tip_input2').text
self.assertEqual(error_message,'請輸入密碼')
self.dr.get_screenshot_as_file('D://cnblogtest//login_pwd_null.png')
def test_login_user_error(self):
'''用戶名錯誤,密碼正確'''
self.login('wwc','xxxxxx')
sleep(2)
error_message=self.dr.find_element_by_id('tip_btn').text
self.assertIn('該用戶不存在',error_message)
self.dr.get_screenshot_as_file('D://cnblogtest//login_user_error.png')
def test_login_user_null(self):
'''用戶名為空,密碼正確'''
self.login('','cccccc')
error_message=self.dr.find_element_by_id('tip_input1').text
self.assertEqual(error_message,'請輸入登錄用戶名')
self.dr.get_screenshot_as_file('D://cnblogtest//login_user_null.png')
def tearDown(self):
sleep(2)
print('自動測試完畢!')
self.dr.quit()
if __name__ == '__main__':
unittest.main()
以上是在IDEA中編寫的python自動化測試用例,遇到的問題大致有:
(一):ImportError: cannot import name 'webdriver' from 'selenium' (C:\Users\Mr.Su\PycharmProjects\***\venv\selenium.py)
原因是我給我的python文件命名為selenium,所以在import selenium的時候有沖突,所以解絕方法就是重命名文件名
(二):用於保存屏幕截圖的名稱與文件類型不匹配。它應該以擴展名“.png”結尾
(三):AssertionError: '該用戶不存在' not found in ''
(四):遇到了滑動驗證,需要使用from PIL import Image,報紅了,解決方案是在IDEA的項目中 file->project structure->paltform settings->SDKs->packages中添加module 安裝PIL 需要安裝pillow
最后總結一下自己一開始寫的時候的迷惑點:
1.unittest中的執行順序是先執行前置,然后執行用例,在執行后置,最后結束,然后再繼續其他的用例
2.定義的函數必須是以test開頭的,不然不會被執行,用例執行順序不固定