流程说明
- 打开登录url,如http://192.168.10.6/login
- 在用户名输入框中输入登录的用户名,如test001
- 在密码是输入框中输入密码,如testgood001
- 点击登录页面的登录按钮,
- 登录成功页面,断言登录成功
线性操作
根据上面的步骤提示下面代码显示登录操作,如下
from selenium import webdriver
import unittest
import sys
# 打开登录url,如http://192.168.10.6/login
# 在用户名输入框中输入登录的用户名,如test001
# 在密码是输入框中输入密码,如testgood001
# 点击登录页面的登录按钮,
# 登录成功页面,断言登录成功
reload(sys)
sys.setdefaultencoding('utf8')
class TestLogin(unittest.TestCase):
def setUp(self):
#指定浏览器
self.driver = webdriver.Chrome()
#打开url
self.driver.get("http://192.168.10.6/login")
#登录操作
def test_login(self):
title = self.driver.title
print(title)
now_url = self.driver.current_url
print(now_url)
username = "test001"
password = "testgood001"
#执行登录操作
#用户名的定位
un = self.driver.find_element_by_id("username")
un.clear()
un.send_keys(username)
#密码的定位
pwd = self.driver.find_element_by_id("password")
pwd.clear()
pwd.send_keys(password)
#点击登录
self.driver.find_element_by_css_selector(".btn.btn-success.btn-block").click()
#登录成功断言
login_name = self.driver.find_element_by_xpath('html/body/div[3]/div[2]/ul/li[1]/a/strong').text
login_name = login_name.strip('您好:')
assert login_name == username
#关闭浏览器
def tearDown(self):
self.driver.quit()
if __name__ == "__main__":
unittest.main()
上面代码显示的是登录成功的正常用例;实际操作中,针对登录不仅仅有正常用例,还有异常用例,如用户名为空,密码为空,用户名错误,密码错误等;我们不能一个用例编写一个py文件,如果这样操作从本质而言相反增加了工作量。
既然问题出来了,那么如何解决这个问题呢?
思路:针对登录而言,所有的步骤都是一样的,唯一不同的就是登录的用户名和密码,所以我们可以封装登录步骤,然后只需要专注不同测试用例中的登录的用户名和密码的验证即可。
这里为了后续测试的简便,使用了selenium中的po模式,即针对每个功能的操作页面进行封装,