selenium--更改標簽的屬性值


前戲

在進行web自動化的時候,我們有時需要獲取元素的屬性,有時需要添加,有時需要刪除,這時候就要通過js來進行操作了

實戰

from selenium import webdriver
import unittest


def addAttribute(driver, elementobj, attributeName, value):
    '''
    封裝向頁面標簽添加新屬性的方法
    調用JS給頁面標簽添加新屬性,arguments[0]~arguments[2]分別
    會用后面的element,attributeName和value參數進行替換
    添加新屬性的JS代碼語法為:element.attributeName=value
    比如input.name='test'
    '''
    driver.execute_script("arguments[0].%s=arguments[1]" % attributeName, elementobj, value)


def setAttribute(driver, elementobj, attributeName, value):
    '''
    封裝設置頁面對象的屬性值的方法
    調用JS代碼修改頁面元素的屬性值,arguments[0]~arguments[1]分別
    會用后面的element,attributeName和value參數進行替換
    '''
    driver.execute_script("arguments[0].setAttribute(arguments[1],arguments[2])", elementobj, attributeName, value)


def getAttribute(elementobj, attributeName):
    # 封裝獲取頁面對象的屬性值方法
    return elementobj.get_attribute(attributeName)


def removeAttribute(driver, elementobj, attributeName):
    '''
    封裝刪除頁面屬性的方法
    調用JS代碼刪除頁面元素的指定的屬性,arguments[0]~arguments[1]分別
    會用后面的element,attributeName參數進行替換
    '''
    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 = "D:\PycharmProjects\zouzou\dom.html"
        self.driver.get(url)
        element = self.driver.find_element_by_xpath('//input')

        # 向頁面文本框input標簽中添加新屬性name='search'
        addAttribute(self.driver, element, 'name', 'search')
        # 添加新屬性后,查看一下新屬性值
        print('添加的新屬性值%s="%s"' % ("name", getAttribute(element, "name")))

        print('更改文本框中內容前的value的值:', getAttribute(element, 'value'))
        # 更改value的屬性值為“這是更改后的值”
        setAttribute(self.driver, element, 'value', '這是更改后的值')
        print('更改后value的值為:', getAttribute(element, 'value'))

        # 查看更改前input頁面元素中size屬性值
        print('更改前size的屬性值為:', getAttribute(element, 'size'))
        # 更改input的屬性值為20
        setAttribute(self.driver, element, 'size', 20)
        print('更改后size的屬性值為:', getAttribute(element, 'size'))

        # 查看刪除input頁面元素value屬性前的值
        print('刪除前文本框value的值:', getAttribute(element, 'value'))
        # 刪除屬性值
        removeAttribute(self.driver, element, 'value')
        print('刪除后文本框value的值:', getAttribute(element, 'value'))


if __name__ == '__main__':
    unittest.main()

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM