• Web自动化测试(4)-关键字驱动


    关键字驱动

    1、简介

    在进行自动化测试程序的设计时,为了解决代码冗余、可读性差、复用性低以及维护成本高的问题,常常需要采用更高效的设计模式,目前主要有关键字驱动与POM设计模型两种框架设计模式,其中关键字驱动的设计模式出现较早,主要是利用关键字对selenium接口进行二次封装,测试环境的不同步骤就转换为不同的关键字,提高了代码的可读性、复用性以及可维护性,降低了代码冗余。

    2、简单示例

    对百度搜索的基本功能进行封装,主要实现输入特定内容,获取搜索结果,打印结果的名称与链接,并打开对应网页,具体代码如下:

    from selenium import webdriver
    from selenium.webdriver.common.by import By
    class KeyWordsTest:
        # 打开浏览器
        def open_browser(self,browser):
            browser = browser.capitalize()
            if browser in ["Chrome","Edge","Firefox"]:
                ##利用反射的方式获取浏览器驱动
                self.driver = getattr(webdriver,browser)()
                self.driver.maximize_window() #窗口最大化
                self.driver.implicitly_wait(5)
            else:
                raise ValueError("未检测到支持的浏览器类型")
        # 加载网页
        def load_url(self,url):
            self.driver.get(url)
            self.driver.implicitly_wait(5)
        # 定位元素
        def locate_element(self,loc):
            # 使用*提取元组中的元素
            return self.driver.find_element(*loc)
        # 定位元素列表
        def locate_elements(self,loc):
            # 使用*提取元组中的元素
            return self.driver.find_elements(*loc)
        #输入信息
        def input(self,loc,value):
            self.locate_element(loc).send_keys(value)
            self.driver.implicitly_wait(1)
        #点击操作
        def click(self,loc):
            self.locate_element(loc).click()
            self.driver.implicitly_wait(5)
    if __name__ == '__main__':
        content = 'selenium'
        ktest = KeyWordsTest()
        ktest.open_browser("edge")
        ktest.load_url("https://www.baidu.com/")
        ktest.input((By.ID,"kw"),content)
        ktest.click((By.ID,"su"))
        results = ktest.locate_elements((By.XPATH,"//a[contains(string(), \'%s\')]"%(content)))
        for result in results:
            if result.get_attribute("href"):
                print(result.get_attribute("text").strip())
                # 搜索结果的标题
                title = result.get_attribute("text").strip()
                # 搜索结果的网址
                link = result.get_attribute("href")
                print(f"Title: {title}, link is: {link} \n")
                result.click()
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50

    3、快速查找页面元素的xpath或css Selector

    在上述实验中可以看出,搜索结果的xpath或者css selector的提取比较繁琐,如何快速有效地找到不同搜索结果通用的xpath或者css selector成为首先要解决的问题。因此可以在浏览器的扩展应用商店中输入xpath或者css selector查找相应的扩展,安装完成即可,此处以xpath selector插件为例,点击插件,此时在浏览器上方会出现如下显示窗口:
    在这里插入图片描述

    接着按着shift按钮,将鼠标左键放置在搜索结果上即可出现xpath或者css selector的字符串,也可以点击红色框中的按钮自行修改,修改完成后被选中的搜索结果会高亮显示。

  • 相关阅读:
    java8 stream list 操作
    主流的深度学习推理架构有哪些(NCNNN)
    【枚举+贪心】CF1409 E
    【Spring】AOP相关、五种增强方式、IoC与AOP注解开发、纯注解开发
    Spring | 事务没有生效导致数据没有持久化的探究
    Linux学习-30-chgrp、chown等修改文件和目录的所有者和所属组命令
    【Oracle篇】rman时间点异机恢复:从RAC环境到单机测试环境的转移(第六篇,总共八篇)
    UseGalaxy.cn生信云|生物信息必备技能-出版级别的circos圈图绘制
    Python 3.11新功能:错误信息回溯
    基于C++实现的几何学与计算机的交叉应用(四色定理、三维凸包)
  • 原文地址:https://blog.csdn.net/Lxh19920114/article/details/126319934