• 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的字符串,也可以点击红色框中的按钮自行修改,修改完成后被选中的搜索结果会高亮显示。

  • 相关阅读:
    蓝牙耳机哪款好用音质好?高音质的蓝牙耳机推荐
    当创建pvc后,kubernetes组件如何协作
    6、DVWA——SQL injection
    LabVIEW风力涡轮机的雷电流测量系统中集成高速摄像机
    如何利用pg_dump和pg_restore迁移从一个PostgreSQL服务器到另一个服务器,同时保持一致性与高效性?
    38. 干货系列从零用Rust编写负载均衡及代理,负载均衡中ip通行与禁止
    SIMULIA--Abaqus结构仿真篇
    bp神经网络的主要功能,神经网络和bp神经网络
    面试官:字节流可以处理一切文件为什么还需要字符流呢?
    iOS证书和描述文件申请详情步骤
  • 原文地址:https://blog.csdn.net/Lxh19920114/article/details/126319934