selenium之UI自动化时更改/添加/获取标签的属性值

前言

在web自动化测试的过程中,根据用例可能需要

①获取某元素的某标签的某属性值;例如使用 get_attribute('value') 获取元素显示的value值

②更改某元素的某标签的某属性值;例如密码框需要先将type属性的属性值由password修改为text之后才可以使用 get_attribute('value') 

③增加某元素的某标签的某属性值;(暂时未用到)

实现方法

复制代码
def add_attribute(driver, element_obj, attribute_name, value):
    """
    封装向页面标签添加新属性的方法
    调用JS给页面标签添加新属性,arguments[0]~arguments[2]分别
    会用后面的element,attributeName和value参数进行替换
    添加新属性的JS代码语法为:element.attributeName=value
    比如input.name='test'
    """
    driver.execute_script("arguments[0].%s=arguments[1]" % attribute_name, element_obj, value)


def set_attribute(driver, element_obj, attribute_name, value):
    """
    封装设置页面标签的属性值的方法
    调用JS代码修改页面元素的属性值,arguments[0]~arguments[1]分别
    会用后面的element,attributeName和value参数进行替换
    """
    driver.execute_script("arguments[0].setAttribute(arguments[1],arguments[2])", element_obj, attribute_name, value)


def get_attribute(element_obj, attribute_name):
    
    # 封装获取页面对象的属性值方法(selenium原生api)
    return element_obj.get_attribute(attribute_name)


def remove_attribute(driver, element_obj, attribute_name):
    """
    封装删除页面标签的属性的方法
    调用JS代码删除页面元素的指定的属性,arguments[0]~arguments[1]分别
    会用后面的element,attributeName参数进行替换
    """
    driver.execute_script("arguments[0].removeAttribute(arguments[1])",
                          element_obj, attribute_name)
复制代码

实例

将百度首页的搜索框后的《百度一下》按钮文本值修改为《就不点击》

复制代码
from selenium import webdriver

options = webdriver.ChromeOptions()
driver
= webdriver.Chrome(executable_path='/home/test/MyCode/Common/driver/chromedriver_105', chrome_options=options)
driver.get(
'http://www.baidu.com')
element_obj
= driver.find_element_by_xpath('//*[@id="su"]')
js
= 'arguments[0].setAttribute(arguments[1],arguments[2])'

driver.execute_script(js, element_obj, 'value', '就不点击')
复制代码

运行结果:

 

posted @   习久性成  阅读(1439)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
历史上的今天:
2021-11-03 Docker介绍
点击右上角即可分享
微信分享提示