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开头的,不然不会被执行,用例执行顺序不固定