zoukankan      html  css  js  c++  java
  • selenium获取元素封装

    背景

    在功能自动化这里,不管是selenium还是robotframework等各种开源框架,他们提供的获取元素方法有很多,但是这些框架的函数都抽象的相对原子化,比如通过id获取元素那他就是单纯传入id定位来获取dom元素,这个过程如果元素找不到,比如不可见、不可点击等等,那就是直接抛异常,然后用例也就出错了。
    那么面临这样的问题,通常就会有两个方案,一个是在原有基础上二开,另一个就是自己造轮子写一个框架,早期我也写过几个这样那样的框架,他们都放在github(可以搜kangpc,不过都没维护),这都不是重点,这里我只是记录下早期封装的一个通用的获取元素的方法,代码如下:

    from selenium.webdriver.support.ui import WebDriverWait
    
    # 获取单个页面元素对象
    def getElement(driver, locationType, locatorExpression):
        try:
            element = WebDriverWait(driver, 30).until(
                lambda x: x.find_element(by=locationType, value = locatorExpression))
            return element
        except Exception as e:
            raise e
    
    # 获取多个相同页面元素对象,以list返回
    def getElements(driver, locationType, locatorExpression):
        try:
            elements = WebDriverWait(driver, 30).until(
                lambda x:x.find_elements(by=locationType, value = locatorExpression))
            return elements
        except Exception as e:
            raise e
    
    if __name__ == '__main__':
        from selenium import webdriver
        # 进行单元测试
        driver = webdriver.Chrome(executable_path="D:\python37\chromedriver.exe")
        driver.get("http://www.baidu.com")
        searchBox = getElement(driver, "id", "kw")
        # 打印页面对象的标签名
        print(searchBox.tag_name)
        aList = getElements(driver, "tag name", "a")
        print(len(aList))
        driver.quit()
    
    
    
    
    
    更多学习笔记移步 https://www.cnblogs.com/kknote
  • 相关阅读:
    正则表达式
    session
    diango中三种response对象的方法
    diango中让装了装饰器的函数的名字不是inner,而是原来的名字
    cookie
    diango创建一个app
    diango运行流程
    diango使用顺序
    一个diango项目的结构
    diango下载、创建、启动
  • 原文地址:https://www.cnblogs.com/kknote/p/15773650.html
Copyright © 2011-2022 走看看