脚本编写及运行

在没开始正式学习自动化之前,我们首先来了解一下自动化测试用例到底是怎么写的,心里大概有个底,下面是咪咕阅读网站登录成功的测试用例脚本

注:下面代码方法前的注释属于不规范行为,如复制黏贴到编辑器会报错,此注释主要针对大家更好的理解

#第一段
#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开头。 markdown

版权声明:如无特殊说明,文章均为本站原创,转载请注明出处

本文链接:http://example.com/article/selenium-script/