软件测试|selenium+python基础方法封装(一)

简介: 软件测试|selenium+python基础方法封装(一)

在这里插入图片描述

Web自动化是自动化测试中的重要部分,作为广大测试从业者的首选学习对象,相较于C/S架构的自动化来说,B/S有着其无法忽视的诸多优势,从行业发展趋、研发模式特点、测试工具支持,其整体的完整生态已经远远超过了C/S架构方面的测试价值。

Selenium是当下最流行的web自动化测试框架,支持各种Java、Python等语言,这里,我们选择Python语言来进行封装。既然选择了python这门语言来实现对selenium的封装,那我们就需要使用Python的面向对象编程的理念来对selenium进行封装。就字面意思来理解的话,就像是把各种物品放入一个箱子内,日后需要使用的话就必须从这个箱子里拿才可以获取那个放入的物品。而这个比喻内的箱子就是python内的类,而各类物品则是我们自己根据需要自定义的各种属性和数据、方法,后续需要使用这些属性、数据、方法时,只要引入对应的类并实例化即可。

浏览器操作封装

我们就先从最基本的浏览器操作开始,这里会遵循一些简单的日常业务操作进行介绍,并且对类内的方法进行拆解,逐一介绍。

我们定义的类名为:BrowserDriver,构造函数传入browser。

class BrowserDriver:
    def __init__(self, browser):
        self.driver = self.open_browser(browser)
  1. 打开浏览器
def open_browser(self, browser):
    if browser == 'chrome':
        options = webdriver.ChromeOptions()
        exclude = ['enable-automation']
        options.add_experimental_option('excludeSwitches', exclude)
        driver = webdriver.Chrome(chrome_options=options)
    elif browser == 'firefox':
        profile = webdriver.FirefoxProfile()
        profile.set_preference('browser.download.dir', 'E:\FireFox_DL\\')
        profile.set_preference('browser.download.folderList', 2)
        profile.set_preference('browser.helperApps.neverAsk.saveToDisk', 'application/zip')
        driver = webdriver.Firefox(firefox_profile=profile)
   
    else:
        driver = webdriver.Edge()
    return driver

注:ChromeOptions()这个方法是chrome浏览器的参数对象,用来配置浏览器启动是的一些参数与属性,这里添加的是浏览器启动后不显示“正受到自动测试软件的控制”的提示,用法比较简单,add_experimental_option这边是添加试验性质的参数,另外比较常用的还有add_argument,add_extension(添加启动项、添加扩展)等方法。

注:Mac系统还可以加上Safari浏览器的参数

  1. 访问地址

封装的功能比较简单的,这里检查URL内是否含有http,可根据自己的需求将判断逻辑这块加强,将错误之后抛异常的动作实现成自动添加http或https至url的开头处等都可。

def get_url(self, url):
    if self.driver != None:
        sleep(1)
        if 'http' in url:
            self.driver.get(url)
        else:
            session.add(err_message)
            session.commit()
    else:
        session.add(fail_message)
        session.commit()
  1. 浏览器窗口操作

窗口操作也是比较常用的基础功能之一,以下将基本的最大化、最小化、前进、后退、刷新、设定尺寸大小封装起来。之后会判断可变参数的长度,根据传入的长度不同进行对应的窗口操作。

def browser_handle(self, *args):
    param = len(args)
    if param == 1:
        if args[0] == 'max':
            self.driver.maximize_window()
        elif args[0] == 'min':
            self.driver.minimize_window()
        elif args[0] == 'forward':
            self.driver.forward()
        elif args[0] == 'back':
            self.driver.back()
        else:
            self.driver.refresh()
    elif param == 2:
        self.driver.set_window_size(args[0], args[1])
    else:
        session.add(fail_message)
        session.commit()
    sleep(2)
  1. 切换窗口

另一个日常较为频繁的业务操作就是切换窗口,也就是我们的标签页,我们可以使用遍历的方式获得一个当前所有的窗口列表,通过传递默认参数title来进行当前窗口的切换,直到匹配到与title相同的窗口。

def switch_windows(self, title=None):
    windows_list = self.driver.window_handles
    current_window = self.driver.current_window_handle
    for i in windows_list:
        if i != current_window:
            time.sleep(1)
            self.driver.switch_to.window(i)
            if self.assert_title(title):
                break
相关文章
|
2天前
|
Python
python保存两位小数的几种方法,python2保留小数
python保存两位小数的几种方法,python2保留小数
16 2
|
2天前
|
数据采集 人工智能 数据可视化
Python selenium爬虫被检测到,该怎么破?
Python selenium爬虫被检测到,该怎么破?
|
1天前
|
传感器 物联网 测试技术
未来科技浪潮中的领航者:区块链、物联网与虚拟现实的融合与创新探索自动化测试之美——以Selenium为例
【8月更文挑战第30天】本文深入探讨了当前最前沿的技术趋势——区块链、物联网和虚拟现实,并分析了它们各自的发展脉络及相互之间的融合可能性。我们将通过具体应用场景描绘这些技术如何塑造未来社会的面貌,同时提供代码示例以加深理解。文章旨在为读者揭示这些技术背后的巨大潜力,以及它们将如何影响我们的工作和生活方式。
|
2天前
|
Python
|
2天前
|
C++ Python
python类方法中使用:修饰符@staticmethod和@classmethod的作用与区别,还有装饰器@property的使用
python类方法中使用:修饰符@staticmethod和@classmethod的作用与区别,还有装饰器@property的使用
6 1
|
2天前
|
存储 编解码 API
python多种方法压缩图片,opencv、PIL、tinypng、pngquant压缩图片
python多种方法压缩图片,opencv、PIL、tinypng、pngquant压缩图片
10 1
|
2天前
|
Python
python的列表的remove()方法、判断if xxx in xx条件比较耗时问题
python的列表的remove()方法、判断if xxx in xx条件比较耗时问题
10 1
|
2天前
|
算法 定位技术 vr&ar
一文了解PnP算法,python opencv中的cv2.solvePnP()的使用,以及使用cv2.sovlePnP()方法标定相机和2D激光雷达
一文了解PnP算法,python opencv中的cv2.solvePnP()的使用,以及使用cv2.sovlePnP()方法标定相机和2D激光雷达
15 0
一文了解PnP算法,python opencv中的cv2.solvePnP()的使用,以及使用cv2.sovlePnP()方法标定相机和2D激光雷达
|
2天前
|
Web App开发 敏捷开发 测试技术
自动化测试之美:使用Selenium WebDriver进行网页功能验证
【8月更文挑战第29天】在数字时代,软件质量是企业竞争力的关键。本文将深入探讨如何通过Selenium WebDriver实现自动化测试,确保网页应用的可靠性和性能。我们将从基础设置到编写测试用例,逐步引导读者掌握这一强大的测试工具,同时分享实战经验,让测试不再是开发的负担,而是质量保证的利器。
|
9天前
|
前端开发 测试技术 Python
【Selenium全攻略】掌握这一工具,实现自动化测试的所有梦想
本文分享了使用Selenium进行UI自动化测试的全过程,包括开发环境部署、代码实现、思路分析和难点解析。作者通过一个实际案例,讲述了如何利用Selenium处理前端生成报告失败的问题,以及在UI自动化中定位元素和处理元素不唯一的情况。同时,文章强调了解决问题思路的重要性,鼓励读者开拓思维,寻找不同的解决方案。
50 4
【Selenium全攻略】掌握这一工具,实现自动化测试的所有梦想

热门文章

最新文章

下一篇
云函数