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

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

在这里插入图片描述
上一篇文章我们主要封装了浏览器的操作,这篇文章我们将封装selenium的元素操作。

  1. 获取页面元素

封装定位元素的方法,selenium提供了多种元素定位方式,css,xpath,id,name等方法。元素定位自然不必多说了,web自动化中的基础操作,也是日常接触的最多的功能,封装的功能只需传两个参数,定位方式与元素对应的属性值。这里可以改造的地方还是有很多的,比如不手动指定,通过持久化或者文件指定对应要查找的元素,需要定位的元素属性也可以通过其他方式进行抽出,进行二次开发时可根据业务需求进行灵活多变的定制。

def get_element(self, by, ele):
    element = None
    try:
        if by == 'id':
            element = self.driver.find_element(By.ID, ele)
        elif by == 'name':
            element = self.driver.find_element(By.NAME, ele)
        elif by == 'css':
            element = self.driver.find_element(By.CSS_SELECTOR, ele)
        elif by == 'class':
            element = self.driver.find_element(By.CLASS_NAME, ele)
        else:
            element = self.driver.find_element(By.XPATH, ele)
    except:
        session.add(ele_err_msg)
        session.commit()
    return element
  1. 层级元素定位

层级元素定位的实现逻辑其实就是根据链式写法产生的,原生的find_element()方法是可以从当前捕捉到的元素层级开始往下再次定位的,我们就利用这一特性,先使用上一个定位元素的方法get_element()来再一次进行find_element()方法,这样就可以实现层级元素的定位操作。

def get_level_element(self, by, ele, ch_by, ch_ele):
    element = self.get_element(by, ele)
    ch_element = None
    try:
        if ch_by == 'id':
            ch_element = element.find_element(By.ID, ch_ele)
        elif ch_by == 'name':
            ch_element = element.find_element(By.NAME, ch_ele)
        elif ch_by == 'css':
            ch_element = element.find_element(By.CSS_SELECTOR, ch_ele)
        elif ch_by == 'class':
            ch_element = element.find_element(By.CLASS_NAME, ch_ele)
        else:
            ch_element = element.find_element(By.XPATH, ch_ele)
    except:
        session.add(ele_err_msg)
        session.commit()
    return ch_element
  1. 输入操作

输入操作的封装相对比较直白,定位元素并传值即可。需要注意的点就是如果定位的元素本身出了问题的话,我们可以利用判断条件来规避一些异常的情况。

def send_info(self, by, ele, info):
    element = self.get_element(by, ele)
    if element is not None:
        element.send_keys(info)
    else:
        session.add(null_key_msg)
        session.commit()
  1. 点击操作

与输入操作类似

def click_element(self, by, ele):
    element = self.get_element(by, ele)
    if element is not None:
        element.click()
    else:
        session.add(null_key_msg)
        session.commit()
  1. 控件操作

控件的种类还是比较多的,这里就举个比较典型的例子。下面封装的是一个复选框(勾选框),这里的传参前两个就不介绍了,最后一个表示复选框目前的勾选状态,我这里定义的0为未勾选,1为已勾选状态。这里的实现逻辑大致为:判断对象是否为勾选状态,再判断是否需要勾选,结合两种状态一般就是有4个结果,勾选状态下勾选和不勾选、未勾选状态下勾选和不勾选。

def check_box(self, by, ele, selected=None):
    element = self.get_element(by, ele)
    flag = element.is_selected()
    if flag == True:
        if selected == 0:
            self.click_element(by, ele)
    else:
        if selected == 1:
            self.click_element(by, ele)
  1. 元素是否可见

对于页面上的某些元素是否可见,我们也可以封装一个方法,用来增强整体的元素定位方法的健壮性,该方法可以直接在元素定位时进行调用,将原有的返回对象进行预先判断。

def ele_display(self, ele):
    flag = ele.is_displayed()
    if flag == True:
        return ele
    else:
        session.add(ele_dis_msg)
        session.commit()
相关文章
|
3天前
|
安全 数据可视化 前端开发
【测试开发】用例篇 · 熟悉黑盒测试用例设计方法(2)· 正交表 · 场景设计 · 常见案例练习
【测试开发】用例篇 · 熟悉黑盒测试用例设计方法(2)· 正交表 · 场景设计 · 常见案例练习
14 0
|
1天前
|
存储 XML 测试技术
深入理解自动化测试中的数据驱动方法
【5月更文挑战第17天】 在软件测试领域,数据驱动测试(DDT)是一种高效的测试方法,它允许测试人员通过外部数据源来控制测试用例的执行。这种方法的核心在于将测试逻辑与测试数据分离,使得测试案例可以简单地通过改变输入数据集来扩展和复用。本文旨在探讨数据驱动测试的原理、实施策略及其在实际项目中的应用效果,以期为读者提供一种提高测试效率和质量的有效手段。
|
1天前
|
Web App开发 Ubuntu Linux
Linux无图形界面环境使用Python+Selenium实践
【5月更文挑战第1天】Linux无图形界面环境使用Python+Selenium实践
15 2
|
1天前
|
JavaScript Java 测试技术
《手把手教你》系列技巧篇(四十六)-java+ selenium自动化测试-web页面定位toast-下篇(详解教程)
【5月更文挑战第10天】本文介绍了使用Java和Selenium进行Web自动化测试的实践,以安居客网站为例。最后,提到了在浏览器开发者工具中调试和观察页面元素的方法。
12 2
|
2天前
|
敏捷开发 测试技术 持续交付
深入理解自动化测试框架:以Selenium为例
【5月更文挑战第16天】 随着软件行业的迅猛发展,质量保障变得愈加重要。自动化测试作为确保软件质量的重要环节,其效率和可靠性受到了广泛关注。本文旨在深入探讨自动化测试框架的构建与优化,特别是以Selenium框架为例,分析其在实际应用中的优势、常见问题以及解决方案。通过具体案例分析,揭示如何提高自动化测试的稳定性和灵活性,从而更好地服务于敏捷开发和持续集成流程。
19 5
|
2天前
|
Web App开发 JavaScript 测试技术
《手把手教你》系列技巧篇(四十五)-java+ selenium自动化测试-web页面定位toast-上篇(详解教程)
【5月更文挑战第9天】本文介绍了在Appium中处理App自动化测试中遇到的Toast元素定位的方法。Toast在Web UI测试中也常见,通常作为轻量级反馈短暂显示。文章提供了两种定位Toast元素的技巧.
10 0
|
3天前
|
人工智能 测试技术 数据处理
【测试开发】用例篇 · 熟悉黑盒测试用例设计方法(1)等价类划分法、边界值法、判定表法
【测试开发】用例篇 · 熟悉黑盒测试用例设计方法(1)等价类划分法、边界值法、判定表法
7 0
|
3天前
|
前端开发 Java 测试技术
selenium+python自动化测试--登录
selenium+python自动化测试--登录
12 2
|
3天前
|
Web App开发 缓存 前端开发
《手把手教你》系列技巧篇(四十四)-java+ selenium自动化测试-处理https 安全问题或者非信任站点-下篇(详解教程)
【5月更文挑战第8天】这篇文档介绍了如何在IE、Chrome和Firefox浏览器中处理不信任证书的问题。作者北京-宏哥分享了如何通过编程方式跳过浏览器的证书警告,直接访问不受信任的HTTPS网站。文章分为几个部分,首先简要介绍了问题背景,然后详细讲解了在Chrome浏览器中的两种方法,包括代码设计和运行效果,并给出了其他浏览器的相关信息和参考资料。最后,作者总结了处理此类问题的一些通用技巧。
16 2
|
3天前
探讨AC/DC电源模块的可靠性设计和测试方法
探讨AC/DC电源模块的可靠性设计和测试方法
探讨AC/DC电源模块的可靠性设计和测试方法

热门文章

最新文章