更改一个页面对象的属性值

<html>
<head>
    <title>设置文本框属性</title>
    <meta http-equiv = "Content-Type" content = "text/html; charset = utf-8">
</head>
<body>
    <input type="text" id="text" value="今年夏天西瓜相当甜!" size=100>
    文本框
    </input>
</body>
</html>
#!usr/bin/env python  
#-*- coding:utf-8 -*-  
""" 
@author:   sleeping_cat
@Contact : zwy24zwy@163.com 
""" 
#更改一个页面对象的属性值

from selenium import webdriver
import unittest

def addAtttribute(driver,elementObj,attributeName,value):
    #封装向页面标签中添加新属性的方法
    #调用JavaScript代码给页面标签添新属性,arguments[0]~arguments[2]分别会用后面的element、attributeName和value参数值进行替换,并执行该JavaScript代码
    #添加新属性的JavaScript代码语法为:element.attributeName = value
    #比如 input.name = 'test'
    driver.execute_script("arguments[0].%s=arguments[1]" %attributeName,elementObj,value)

def setAttribute(driver,elementObj,attributeName,value):
    #封装设置页面对象的属性值的方法
    #调用JavaScript代码修改页面元素的属性值,arguments[0]~arguments[2]分别会用后面的element、attributeName和value参数值进行替换,并执行该JavaScript代码
    #添加新属性的JavaScript代码语法为:element.attributeName = value
    driver.execute_script("arguments[0].setAttribute(arguments[1],arguments[2])",elementObj,attributeName,value)

def getAtttribute(elementObj,attributeName):
    # 封装获取页面对象的属性值的方法
    return  elementObj.get_attribute(attributeName)

def removeAttribute(driver,elementObj,attributeName):
    #封装删除页面元素属性的方法
    #调用JavaScript代码修改页面元素的属性值,arguments[0]、arguments[1]分别会用后面的element、attributeName参数值进行替换,并执行该JavaScript代码
    #添加新属性的JavaScript代码语法为:element.attributeName = value
    driver.execute_script("arguments[0].removeAttribute(arguments[1])",elementObj,attributeName)

class TestDemo(unittest.TestCase):
    def setUp(self):
        self.driver = webdriver.Chrome()

    def test_dataPicker(self):
        url = "e://operateAttribute.html"
        self.driver.get(url)
        element = self.driver.find_element_by_xpath('//input')
        addAtttribute(self.driver,element,'name','search')#向页面文本框input标签中添加新属性name = 'search'
        print("添加新的属性值 %s= '% s'" % ('name',getAtttribute(element,'name')))#添加新属性后,查看一下新添加的属性
        print("更改文本框中的内容前的内容:",getAtttribute(element,'value'))#查看修改前文本框input标签的value属性值
        setAttribute(self.driver,element,'value','这是更改后的文字内容')#更改input页面元素的value属性值为“这是更改后的文字内容”
        print('更改文本框中内容后的内容:',getAtttribute(element,'value'))#更改input页面元素的value属性值后,再次查看其value属性值
        print('更改前文本框标签中的size属性值:',getAtttribute(element,'size'))#查看修改前文本框input页面元素中的size属性值
        setAttribute(self.driver,element,"size",20)#更改input页面元素的size属性值为20
        print("更改后文本框标签中的size属性值:",getAtttribute(element,"size"))#更改input页面元素的size属性值后,再次查看其size属性值
        print('文本框value属性值:',getAtttribute(element,'value'))#查看删除input页面元素value属性前value属性值
        removeAttribute(self.driver,element,'value')#删除文本框的value属性
        print('删除value属性值后value属性值:',getAtttribute(element,'value'))#删除文本框的value属性后,再次查看value属性值

    def tearDown(self):
        self.driver.quit()

if __name__ == '__main__':
    unittest.main()
    #对页面元素属性的新增、更改、查询以及删除都是临时的,只针对当前会话有效,页面源码并没有被真正修改
原文地址:https://www.cnblogs.com/sleeping-cat/p/8193460.html