相关文章推荐
机灵的绿茶  ·  如何在Python ...·  1 周前    · 
沉稳的紫菜汤  ·  如何使用Selenium ...·  1 周前    · 
从未表白的毛衣  ·  Python ...·  1 周前    · 
呐喊的键盘  ·  Flye | ...·  1 年前    · 

前戏

在进行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()



java 页面 截取 生成图片 javacv截图

目录目标全量依赖最小依赖截图配置类转码配置类提取音频配置类源视频处理结果类核心类怎么使用 目标将所有格式的视频转码为H5能播放的mp4格式,也可以截取任意一帧图片全量依赖<dependency> <groupId>org.bytedeco</groupId> <artifactId>javacv-platform</artif

物联网开源java项目 物联网开源软件

面向物联网的21个开源软件项目物联网市场呈现碎片化、无定形、不断变化的特点,其性质需要不仅仅像平常那样关注互操作性。开源在这方面表现不俗也就不足为奇了——客户犹豫不决,不敢将物联网的未来寄托在一种可能销声匿迹或变得难以定制、互联的专有平台上。本文介绍了主要的开源产品及项目、面向物联网的开发板、安全和隐私问题及更多内容。 作者:布加迪/编译 【51CTO.com 快译】物