一、基本逻辑
1.自动填写用户名和密码登录成功后跳转到相应页面
2.验证相应页面的url与给定的url是否一致,如果一致则测试通过,如果不一致则不通过
二、以jenkins登陆界面为例,代码如下
1 from selenium import webdriver 2 import unittest 3 from selenium.webdriver.support.wait import WebDriverWait 4 5 class TestLogin(unittest.TestCase): 6 # 指定浏览器 7 def setUp(self): 8 self.driver = webdriver.Firefox(executable_path="F:\Program Files (x86)\Mozilla Firefox\geckodriver.exe") 9 # 打开url 10 self.driver.get("http://192.168.1.151:8080/login?from=%2F") 11 12 # 登录操作 13 def test_login(self): 14 username = "test001" 15 password = "pass001" 16 17 # 执行登录操作 18 #用户名的定位 19 WebDriverWait(self.driver, 10).until(lambda x: x.find_element_by_id('j_username')).clear() 20 WebDriverWait(self.driver, 10).until(lambda x: x.find_element_by_id('j_username')).send_keys(username) 21 #密码的定位 22 WebDriverWait(self.driver, 10).until(lambda x: x.find_element_by_name('j_password')).clear() 23 WebDriverWait(self.driver, 10).until(lambda x: x.find_element_by_name('j_password')).send_keys(password) 24 # 点击登录 25 self.driver.find_element_by_id("yui-gen1-button").click() 26 # 登录成功断言 27 currUrl = self.driver.current_url 28 print("currUrl"+currUrl) 29 if currUrl == "http://192.168.1.151:8080/": 30 print("success") 31 else: 32 print("failure") 33 34 # 关闭浏览器 35 def tearDown(self): 36 self.driver.quit() 37 38 39 if __name__ == "__main__": 40 unittest.main()
三、用例详解
用例主要分为3块:
def setUp(self):函数setUp中,为执行用例前准备操作
def test_login(self):函数test_login中,为用例的具体操作步骤+用例执行后的断言判断操作
def tearDown(self):函数tearDown中,为用例执行完成的还原环境操作
值得一讲的为用户名的定位语句:
WebDriverWait(self.driver, 10).until(lambda x: x.find_element_by_id('j_username')).clear() //找到用户名的值,把值清空 WebDriverWait(self.driver, 10).until(lambda x: x.find_element_by_id('j_username')).send_keys(username) //将username的值写入用户名值中
WebDriverWait:10秒钟内每隔0.5秒去页面找id=j_username属性的值,超过10秒则报错,有效的避免了页面加载延迟导致找不到对应值的bug
find_element_by_id:表示通过id属性去找(鼠标放在用户名框的位置-->右键-->属性),如下图:
四、执行结果
由于此处设置的用户名,密码无效,故返回失败,如下图:(在执行过程中可以看到在火狐中有打开浏览器的一系列操作)
五、用例调试
可以通过在pycharm中进入Python Console中一句一句的执行用例语句,进行用例调试并查看用例每一步操作现象