selenium更改button值

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了selenium更改button值相关的知识,希望对你有一定的参考价值。

参考技术A 方法如下:
Selenium本身并没有提供修改节点属性的API,不过可以通过执行javascript代码的方式设置节点属性,而且通过Selenium获取的节点可以直接作为DOM使用,这就意味这可以直接在JavaScript代码中使用查找到的节点。
execute_script方法的第1个参数用于指定JavaScript代码,而后面的可变参数,也就是为JavaScript代码传递参数。
通过arguments变量获取每个参数值,例如arguments[0]表示第1个参数值,arguments[1]表示第2个参数值,以此类推。

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()

 

以上是关于selenium更改button值的主要内容,如果未能解决你的问题,请参考以下文章

selenium--更改标签的属性值

pathon selenium爬虫里面如何定位一个button元素?

python+selenium button定位方法

按值查找元素 Selenium/Python

Selenium定位问题,用CSS,ID,name或xpath都行,怎么定位这个button.

selenium+python unittest实践过程之问题杂集