UI 自动化高亮元素与截图小工具

本文介绍了一种在Web自动化测试中对元素进行高亮显示并自动截图的方法。通过装饰器实现了元素查找后的高亮及截图功能,方便调试与定位问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

https://testerhome.com/topics/8052

  • 高亮元素
def highlight(func):

    def apply_style(element):
                # 实现的方式很简单,就是定位到元素后,执行js样式
        driver.execute_script("arguments[0].style.border='6px solid red'", element)

    @wraps(func)
    def wrapper(self, *args, **kwargs):
        element = func(self, *args, **kwargs)
        apply_style(element)
        return element

    return wrapper


  • 截图定位的元素
def screenshot(func):

    def screen_shot(screen_name):
        driver.save_screenshot(screen_name)

    @wraps(func)
    def wrapper(self, *args, **kwargs):
        element = func(self, *args, **kwargs)

        screen_shot(str(args[-1]) + '.jpg') # 默认是以定位元素属性为文件名
        return element


    return wrapper

  • 使用
class Action(object):
    def __init__(self, driver):
        self.driver = driver

    @screenshot
    @highlight
    def find_element(self, *loc):
        try:
            WebDriverWait(self.driver, 15).until(lambda driver: driver.find_element(*loc).is_displayed())
            return self.driver.find_element(*loc)
        except Exception as e:
            return e
  • 测试(体现百度价值的时候到了.)

driver = webdriver.Chrome()

driver.get('http://www.baidu.com')

action = Action(driver)

action.find_element(By.ID, 'su')
time.sleep(3)
driver.quit()

  • 效果图(su.jpg)
    效果图(su.jpg)

  • 如果没封装一层定位方法,可以使用如下方式,稍微和上面有些不同,该方法会在定位前后截图,可以用来对比。
def highlight(element, element_name=None, debug=True):
        '''
        debug 参数用来开关截图功能
        '''
    # 高亮元素
    def apply_style():
        driver.execute_script("arguments[0].style.border='6px solid red'", element)

    # 截图
    def screen_shot(screen_name):
        driver.save_screenshot(screen_name)

    if debug:
        try:
            screen_shot(str(element_name) + '_before.jpg')
            apply_style()
            screen_shot(str(element_name) + '_after.jpg')
        except Exception as e:
            return e

    apply_style()

#  使用也很简单
element = driver.find_element(By.ID, 'kw')
highlight(element, 'kw')



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值