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
  • 相关阅读:
    Git使用
    A star算法
    禅语人生
    android中GridView
    关于Android资源学习
    买了胡百敬老师的<SQL SERVER 2008 管理实战>
    人生七苦
    SQL Server 2008实现"编辑所有行"和"返回所有行"的方法
    陈慧娴《永远是你的朋友》专辑歌词
    SQL Server 2008 Service Pack 1 简体中文补丁包下载
  • 原文地址:https://www.cnblogs.com/kknote/p/15773650.html
Copyright © 2011-2022 走看看