zoukankan      html  css  js  c++  java
  • selenium+python+unittest实现自动化测试(入门篇)

    本文主要讲解关于selenium自动化测试框架的入门知识点,教大家如何搭建selenium自动化测试环境,如何用selenium+python+unittest实现web页面的自动化测试,先来看看selenium、unittest是什么。

    一、selenium、unittest概念

    Selenium 是用于测试 Web 应用程序用户界面 (UI) 的常用框架。它是一款用于运行端到端功能测试的超强工具。您可以使用多个编程语言编写测试,并且 Selenium 能够在一个或多个浏览器中执行这些测试,同时支持所有基于web 的管理任务自动化。
    unittest是单元测试框架,不仅适用于单元测试,还可以适用WEB自动化测试用例的开发与执行,该测试框架可组织执行测试用例,并且提供了丰富的断言方法,断言,其实就是对测试结果进行校验,每一个测试用例都有一个期望结果,实际结果跟期望结果不一致,说明执行测试用例不通过,自动化测试也一样,需要对测试结果进行校验,校验成功,说明用例已经通过,最终生成测试结果。

    二、环境搭建:

    安装python:

    下载链接:https://www.python.org/getit/

    安装python编译器pycharm

    http://www.jetbrains.com/pycharm/download/index.html#section=windows

    安装selenium模块:

    win+r 输入cmd

    python -m pip install selenium

    假如用的是Chrome浏览器,还需要下载chromedriver.exe,chromedriver版本与支持的Chrome浏览器版本对应如下:
    在这里插入图片描述

    下载链接:http://npm.taobao.org/mirrors/chromedriver/

    下载完成后,拷贝chromedriver.exe到Chrome浏览器安装目录下:
    在这里插入图片描述
    随后配置环境变量:
    在这里插入图片描述

    三、编写一个简单的自动化测试脚本

    好了,环境已经搭建好了,我们开始写测试用例,来看一下对百度页面写一个简单的自动化测试脚本

    #coding=utf-8
    
    #百度demo
    from selenium import webdriver
    import time
    #单元测试框架,使用该模块,我们可以对用例进行组织和运行,例如如下的BaiduTestCase类继承unittest.TestCase,该类执行会把test开头的方法当成一个测试用例去执行
    import unittest
    class BaiduTestCase(unittest.TestCase):
        def setUp(self):
            print('开始执行测试用例:')
            url = 'https://www.baidu.com'
            self.driver = webdriver.Chrome()#选择谷歌浏览器
            self.driver.get(url)#打开百度页面
    
        def test_bubutton(self):
        	self.driver.find_element_by_id('kw').clear()
            self.driver.find_element_by_id('kw').send_keys('软件测试')#搜索框输入内容
            self.driver.find_element_by_id('su').click()#点击百度按钮
            time.sleep(2)
            self.driver.save_screenshot('D:/baidu.png')#截图
            
        def tearDown(self):
            print('一条用例执行完成。')
            self.driver.quit()#退出浏览器
            
    if __name__=='__main__':
        unittest.main()

    通过上面的一段代码我们就可以实现跳转到百度页面,输入‘软件测试’,点击百度按钮并且搜索,设置停留在搜索结果页面2秒钟,随后截图放到设置的路径,是不是觉得挺简单的呢,但是想要学习更多的自动化测试知识,还是需要更多地熟悉selenium、unittest的api。

    三、熟悉一些常用的元素定位方法、操作方法

    常用元素定位方法:

    1、id定位: find_element_by_id()
    举例:进入浏览器,按f12,定位元素id如下如步骤:
    在这里插入图片描述
    2、name定位: find_element_by_name()
    3、class定位:find_element_by_class_name()
    4、link定位:find_element_by_link_text()
    5、partial_link定位:find_element_by_partial_link_text()
    6、xpath定位:find_element_by_xpath()
    7、CSS定位:find_element_by_css_selector()
    操作方法:
    clear 清除元素的内容
    send_keys 模拟按键输入
    click 点击元素
    submit 提交表单
    size 获取元素的尺寸
    text 获取元素的文本
    get_attribute(name) 获取属性值
    location 获取元素坐标,先找到要获取的元素,再调用该方法
    page_source 返回页面源码
    driver.title 返回页面标题
    current_url 获取当前页面的URL
    is_displayed() 设置该元素是否可见
    is_enabled() 判断元素是否被使用
    is_selected() 判断元素是否被选中
    tag_name 返回元素的tagName
    context_click(elem) 右击鼠标点击元素elem,另存为等行为
    double_click(elem) 双击鼠标点击元素elem,地图web可实现放大功能
    drag_and_drop(source,target) 拖动鼠标,源元素按下左键移动至目标元素释放
    move_to_element(elem) 鼠标移动到一个元素上
    click_and_hold(elem) 按下鼠标左键在一个元素上
    perform() 在通过调用该函数执行ActionChains中存储行为
    send_keys(Keys.ENTER) 按下回车键
    send_keys(Keys.TAB) 按下Tab制表键
    send_keys(Keys.SPACE) 按下空格键space
    send_keys(Kyes.ESCAPE) 按下回退键Esc
    send_keys(Keys.BACK_SPACE) 按下删除键BackSpace
    send_keys(Keys.SHIFT) 按下shift键
    send_keys(Keys.CONTROL) 按下Ctrl键
    send_keys(Keys.ARROW_DOWN) 按下鼠标光标向下按键
    send_keys(Keys.CONTROL,‘a’) 组合键全选Ctrl+A
    send_keys(Keys.CONTROL,‘c’) 组合键复制Ctrl+C
    send_keys(Keys.CONTROL,‘x’) 组合键剪切Ctrl+X
    send_keys(Keys.CONTROL,‘v’) 组合键粘贴Ctrl+V

    unittest常用断言方法:

    assertLocation(判断当前是在正确的页面)、
    assertTitle(检查当前页面的 title 是否正确)、
    assertValue(检查 input 的值, checkbox 或 radio,有值为”on”无为”off”)、
    ​ assertSelected(检查 select 的下拉菜单中选中是否正确)、
    ​ assertSelectedOptions(检查下拉菜单中的选项的是否正确)、
    ​ assertText(检查指定元素的文本)、
    ​ assertTextPresent(检查在当前给用户显示的页面上是否有出现指定的文本)、
    ​ assertTextNotPresent(检查在当前给用户显示的页面上是否没有出现指定的文本)、
    ​ assertAttribute(检查当前指定元素的属性的值)、
    ​ assertTable(检查 table 里的某个 cell 中的值)、
    ​ assertEditable(检查指定的 input 是否可以编辑)、
    ​ assertNotEditable(检查指定的 input 是否不可以编辑)、
    ​ assertAlert(检查是否有产生带指定 message 的 alert 对话框)、
    ​ verifyTitle验证预期的页面标题。
    ​ ​verifyTextPresent验证预期的文本是否在页面上的某个位置。
    ​ verifyElementPresent验证预期的 UI 元素,它的 HTML 标签的定义,是否在当前网页上。
    ​ verifyText核实预期的文本和相应的 HTML 标签是否都存在于页面上。
    ​ verifyTable验证表的预期内容。
    ​ waitForPageToLoad 暂停执行,直到预期的新的页面加载

  • 相关阅读:
    HDU 6071
    HDU 6073
    HDU 2124 Repair the Wall(贪心)
    HDU 2037 今年暑假不AC(贪心)
    HDU 1257 最少拦截系统(贪心)
    HDU 1789 Doing Homework again(贪心)
    HDU 1009 FatMouse' Trade(贪心)
    HDU 2216 Game III(BFS)
    HDU 1509 Windows Message Queue(队列)
    HDU 1081 To The Max(动态规划)
  • 原文地址:https://www.cnblogs.com/xiaoneng/p/11658765.html
Copyright © 2011-2022 走看看