脚本编写及运行
在没开始正式学习自动化之前,我们首先来了解一下自动化测试用例到底是怎么写的,心里大概有个底,下面是咪咕阅读网站登录成功的测试用例脚本
注:下面代码方法前的注释属于不规范行为,如复制黏贴到编辑器会报错,此注释主要针对大家更好的理解
#第一段 #author:命命 import unittest from selenium import webdriver from time import sleep class MyTest(unittest.TestCase): """用户登录""" #第二段 def setUp(self): """初始化环境""" self.driver = webdriver.Chrome() self.driver.maximize_window() self.driver.get("http://www.cmread.com/u/index") #第三段 def login_page(self): """进入登录页面""" self.driver.find_element_by_css_selector("div[class='head_left']>a").click() def login_username(self): """清除输入框,并输入用户名""" #用户名和密码输入框在iframe表单里,需先切换 sleep(1) iframe = self.driver.find_element_by_xpath("//iframe[contains(@src,'https://wap.cmread.com/sso/auth?e_p=1&response_type=token')]") self.driver.switch_to.frame(iframe) self.driver.find_element_by_id("unameInput").clear() self.driver.find_element_by_id("unameInput").send_keys("用户名") def login_password(self): """清除输入框,并输入密码""" self.driver.find_element_by_id("pwdInput").clear() self.driver.find_element_by_id("pwdInput").send_keys("密码") def login_button(self): """点击登录按钮""" self.driver.find_element_by_css_selector("input[name = 'login']").click() def login_success(self): """获取登录成功后的用户名""" return self.driver.find_element_by_css_selector("span[title = '好的好的d']").text #第四段 #登录成功的用例 def test_login1(self): """用户登录成功,断言预期和实际用户名一致""" self.login_page() self.login_username() self.login_password() self.login_button() self.assertEqual(self.login_success(), "预期的用户名") #第五段 def tearDown(self): """收尾工作""" self.driver.quit() #第六段 if __name__ == "__mian__": unittest.main()
代码剖析
第一段代码:导入下面要用到的包,这里比较陌生的是unittest,它是python的单元测试框架用来管理测试用例,在以后的篇章里会讲到。
第二段代码:setUp方法用于开始工作,主要是初始化环境,这里带上了启动浏览器 最大化窗口 打开咪咕阅读,在运行每一条用例前都会做以上操作。
第三段代码:对每个操作都写一个方法,这里包括进入登录页面,输入用户名和密码,点击登录按钮,获取登录后页面的用户名显示。
第四大代码:写了测试用例,对之前定义的方法进行集成形成一个操作流程,最后用assert断言实际输出的用户名和期望用户名是否一致,如一致则本条用例pass。
第五段代码:tearDown用于垃圾回收,为下一条用例留下一个干净的环境。setUp和tearDown形成一个完整的环境,这就好比我们早上晚上都刷牙,少一样就感觉怪怪的。
第六段代码:第一行用了一个if语句表示如果它的值是__main__,则不能作为模块,只能作为脚本语句之后的代码直接运行;
第二行代码指Unittest提供mian()全局方法,main()使用TestLoader类来搜索以“test”命名开头的执行方法,这里大概也明白了我们写用例的方法名为什么要以test开头。
版权声明:如无特殊说明,文章均为本站原创,转载请注明出处
本文链接:http://example.com/article/selenium-script/