广告
返回顶部
首页 > 资讯 > 后端开发 > Python >selenium+unittest实现web自动化的示例代码
  • 830
分享到

selenium+unittest实现web自动化的示例代码

seleniumunittestweb自动化seleniumunittest自动化 2023-03-02 20:03:40 830人浏览 泡泡鱼

Python 官方文档:入门教程 => 点击学习

摘要

前面我们学习unittest 的目的是用它编写 WEB 自动化测试用例,所以接下来会将 unittest 与selenium 结合起来写一个 Web 自动化测试的例子。 我们仍以百度

前面我们学习unittest 的目的是用它编写 WEB 自动化测试用例,所以接下来会将 unittest 与selenium 结合起来写一个 Web 自动化测试的例子。

我们仍以百度搜索为例,创建 test_baidu.py 文件

# _*_ coding:utf-8 _*_
"""
name:zhangxingzai
date:2023/2/25
"""
 
import unittest
from time import sleep
from selenium import webdriver
from selenium.webdriver.common.by import By
 
 
class TestBaidu(unittest.TestCase):
 
    def setUp(self):
        self.driver = webdriver.Firefox()
        self.baidu_url = 'https://www.baidu.com'
 
    def test_search_key_unittest(self):
        self.driver.get(self.baidu_url)
        self.driver.find_element(By.ID, 'kw').send_keys('unittest')
        self.driver.find_element(By.ID, 'su').click()
        sleep(2)
        title = self.driver.title
        self.assertEqual(title, 'unittest_百度搜索')
 
    def test_search_key_selenium(self):
        self.driver.get(self.baidu_url)
        self.driver.find_element(By.ID, 'kw').send_keys('selenium')
        self.driver.find_element(By.ID, 'su').click()
        sleep(2)
        title = self.driver.title
        self.assertEqual(title, 'selenium_百度搜索')
 
    def tearDown(self):
        self.driver.close()
 
 
if __name__ == '__main__':
    unittest.main

对上面的代码不做过多介绍,都是以 unittest 创建测试类和方法的。方法中的代码是Selenium 脚本。不过,这里的代码存在一些问题,我们来一一改进。

首先,观察代码可以发现,两个测试用例中的步骤是一样的,唯一的区别是搜索的关键字和断言的结果不同。在学习过python模块化,所以这里把操作步骤封装成一个方法。

代码如下:

# _*_ coding:utf-8 _*_
"""
name:zhangxingzai
date:2023/2/25
"""
 
import unittest
from time import sleep
from selenium import webdriver
from selenium.webdriver.common.by import By
 
 
class TestBaidu(unittest.TestCase):
 
    def setUp(self):
        self.driver = webdriver.Firefox()
        self.baidu_url = 'Https://www.baidu.com'
    
    # 将百度首页的访问和搜索过程封装成一个baidu_search()方法
    def baidu_search(self, search_key):
        self.driver.get(self.baidu_url)
        self.driver.find_element(By.ID, 'kw').send_keys(search_key)
        self.driver.find_element(By.ID, 'su').click()
        sleep(2)
 
    def test_search_key_unittest(self):
        search_key = 'unittest'
        self.baidu_search(search_key)
        self.assertEqual(self.driver.title, search_key + '百度搜索')
 
    def test_search_key_selenium(self):
        search_key = "selenium"
        self.baidu_search(search_key)
        self.assertEqual(self.driver.title, search_key + "百度搜索")
    
    def tearDown(self):
        self.driver.close()
 
if __name__ == '__main__':
    unittest.main

这里将百度首页的访问和搜索过程封装成一个 baidu_search()方法,并定义 search_key参数为搜索关键字,根据接收的关键字执行不同内容的搜索。这里的 baidu_search()方法不会被当作测试用例执行,因为根据 unittest 查找和执行测试用例的规则,它只会把以“test”开头的方法当作测试用例。

另一个值得讨论的问题是,测试用例的断言要不要写在封装的方法中?从前面的代码可以看出,测试的断言点是一样的。这里更倾向于把断言写在每一条测试用例里面。因为很多时候就算操作步骤是一样的,断言点也不完全一样。从设计的角度来看,断言写在每一个测试用例中也会更加清晰。

另外我们还发现每一条测试用例都要启动和关闭一次浏览器,这是非常耗时的,那么如何减少浏览器的启动和关闭次数呢?利用前面学过的setUpClass/tearDownClass可以解决这个问题。

# _*_ coding:utf-8 _*_
"""
name:zhangxingzai
date:2023/2/25
"""
 
import unittest
from time import sleep
from selenium import webdriver
from selenium.webdriver.common.by import By
 
 
class TestBaidu(unittest.TestCase):
 
    @claSSMethod
    def setUpClass(cls):
        cls.driver = webdriver.Firefox()
        cls.baidu_url = 'https://www.baidu.com'
 
    def baidu_search(self, search_key):
        self.driver.get(self.baidu_url)
        self.driver.find_element(By.ID, 'kw').send_keys(search_key)
        self.driver.find_element(By.ID, 'su').click()
        sleep(2)
 
    def test_search_key_unittest(self):
        search_key = 'unittest'
        self.baidu_search(search_key)
        self.assertEqual(self.driver.title, search_key + '_百度搜索')
 
    def test_search_key_selenium(self):
        search_key = 'selenium'
        self.baidu_search(search_key)
        self.assertEqual(self.driver.title, search_key + '_百度搜索')
 
    @classmethod
    def tearDownClass(cls):
        cls.driver.close()
 
 
if __name__ == '__main__':
    unittest.main

修改前:

修改后:

可以看到修改后省去16秒之多,这里虽然我们将 driver 驱动定义为 cls.driver,但是在每个测试用例中使用时依然为self.driver。

当整个测试类中的所有测试用例都运行完成后,会调用 cls.driver.quit()关闭浏览器。

当一个测试类中有多条测试用例时,这种方式将会大大缩短测试用例的执行时间。

这样我们就得到了一个简单的百度搜索的自动化测试脚本,读者可以根据此例试试别的场景。

到此这篇关于selenium+unittest实现web自动化的示例代码的文章就介绍到这了,更多相关selenium unittest web自动化内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: selenium+unittest实现web自动化的示例代码

本文链接: https://www.lsjlt.com/news/198128.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • selenium+unittest实现web自动化的示例代码
    前面我们学习unittest 的目的是用它编写 Web 自动化测试用例,所以接下来会将 unittest 与Selenium 结合起来写一个 Web 自动化测试的例子。 我们仍以百度...
    99+
    2023-03-02
    selenium unittest web自动化 selenium unittest 自动化
  • 怎么使用selenium+unittest实现web自动化
    今天小编给大家分享一下怎么使用selenium+unittest实现web自动化的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧...
    99+
    2023-07-05
  • Python+selenium+unittest的GUI自动化框架实现
    框架设计说明图:框架实现前的准备工作:1.Python版本为2.7.11的Windows下的安装。2.命令行下的selenium最新版本(编者使用版本为2.53.0,可兼容最新火狐、IE、chrome等浏览...
    99+
    2022-10-18
  • 利用Selenium添加cookie实现自动登录的示例代码(fofa)
    介绍 Selenium可以模拟浏览器进行自动化操作,但一些网站需要进行登录才能进行一些操作,比起输入账号密码,cookie是更加方便的。而且fofa首先登录邮箱账号时获得的cooki...
    99+
    2022-11-12
  • python+appium实现自动化测试的示例代码
    目录1.什么是Appium2.启动一个app自动化程序的步骤3.appium服务介绍4. appium客户端使用5.adb的使用 6.Appium启动过程分析1....
    99+
    2022-11-12
  • 在notepad++实现代码自动化排版的示例
    小编给大家分享一下在notepad++实现代码自动化排版的示例,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!怎么在notepad++中调用原版的astyle的方法。在notepad++:运行或是F5,在输入框中选择asty...
    99+
    2023-06-06
  • selenium自动化测试的示例分析
    本篇文章为大家展示了selenium自动化测试的示例分析,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。下载驱动器http://chromedriver.storage.googleapis.com/...
    99+
    2023-06-26
  • Python实现自动化整理文件的示例代码
    目录自动化整理计算机文件1. 文件的自动分类2. 文件和文件夹的快速查找3. 自动清理重复文件4. 批量转换图片格式5. 按拍摄日期自动分类图片自动化整理计算机文件 通过Python...
    99+
    2022-11-11
  • python+selenium的web自动化上传操作的实现
    目录一、关于上传操作二、input标签三、第三方库pywin32四、第三方工具pyautogui总结一、关于上传操作 上传有两种情况: 如果是input可以直接输入路径的,那么直接使...
    99+
    2022-11-11
  • python自动化测试selenium执行js脚本实现示例
    WebDriver有2个方法执行Java Script脚本。 (1)同步执行:execute_script (2)异步执行:execute_async_script from s...
    99+
    2022-11-12
  • python+pywinauto+lackey实现PC端exe自动化的示例代码
    欢迎阅读 最近一年多一直在从事PC端exe的测试,也是趁着闲余时间,调研了下exe的自动化。 核心框架为python+pywinauto+lackey这样的一个组合方式 本文以大家...
    99+
    2022-11-12
  • python+selenium 实现扫码免密登录示例代码
    目录一、需求描述二、首先扫码登录获取cookies保存到本地未后面免密登录做准备三、初始化浏览器四、获取本地保存的cookies实现登录一、需求描述 web 自动化测试/python...
    99+
    2022-11-11
  • Python实现视频自动打码的示例代码
    目录序言准备工作实现原理模块素材工具代码解析完整代码序言 我们在观看视频的时候,有时候会出现一些奇怪的马赛克,影响我们的观影体验,那么这些马赛克是如何精确的加上去的呢? 本次我们就...
    99+
    2022-11-10
  • SpringBoot实现JWTtoken自动续期的示例代码
    为什么要 token自动续期 token中一般会包含用户的基本信息,为了保证token的安全性,一般会将token的过期时间设置的比较短,但是这样会导致用户因为token过期需要频繁...
    99+
    2023-01-28
    SpringBoot JWT token自动续期 SpringBoot JWT token
  • Python结合Selenium简单实现Web自动化测试
    这篇文章是入门级别的应用Python + Selenium进行自动化测试,包括环境搭建及简单的实例。基本思想是用Firefox Selenium IDE插件录制脚本并生成Python...
    99+
    2022-11-12
  • Python与Appium实现手机APP自动化测试的示例代码
    目录1.什么是Appium2.启动一个app自动化程序的步骤3.appium服务介绍4. appium客户端使用5.adb的使用6.Appium启动过程分析1.什么是Appium a...
    99+
    2022-11-13
  • Python实现APP自动化发微信群消息的示例代码
    目录1. 前言2. 爬虫及服务3. 自动化发送群聊​4. 最后1. 前言 但是对于很多人来说,首先编写一款 App 需要一定的移动端开发经验,其次还需要另外编写无障碍服务应用,如此显...
    99+
    2022-11-12
  • Python实现自动整理文件的示例代码
    目录一、前言二、遍历文件三、移动文件四、自动整理文件1、将图片集中存放2、同步整理文件3、获取文件属性一、前言 今天我们就带大家来实现一下文件自动整理的操作。在我们日常生活中,文件总...
    99+
    2022-11-11
  • python实现自动抢课脚本的示例代码
    目录自动抢课脚本使用手册1.准备工作2.配合使用py脚本和xlsx文件3.auto_get_lesson_pic_recognize功能介绍4.坐标版本(不建议使用)5.代码自动抢课...
    99+
    2022-11-12
  • Python实现自动整理表格的示例代码
    目录前言原理目标实现运行效果前言 今天,在工作的时候,我的美女同事问我有没有办法自动生成一个这样的表格: 第一列是院校+科目,第二列是年份,第三列是数量。 这张表格是基于这一文件夹...
    99+
    2023-03-02
    Python自动整理表格 Python整理表格 Python表格
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作