Python selenium对js元素进行增删改查操作

1.首先,我们列出Selenium 对JS元素操作的4中方法:
  1. 增加属性
 driver.execute_script(“arguments[0].%s=arguments[1]%attributeName,elementObj, value)
  1. 修改属性
driver.execute_script(“arguments[0].setAttribute(arguments[1],arguments[2]), elementObj, attributeName, value)
  1. 获取属性
elementObj.get_attribute(attributeName)
  1. 删除属性
driver.execute_script(“arguments[0].removeAttribute(arguments[1]),elementObj, attributeName)

attributeName 就是属性名字 elementObj 就是元素对象 value 就是值

2.就 '增加属性方法 ',我们具体的讲解一下:

我们要讲解的一个具体的案列是这样的:
Python selenium对js元素进行增删改查操作_第1张图片
分析一下:

图片的左侧是一个表单,有" 开始时间" ,"结束时间"和 “导出类型”。我们想要的结果就是,通过selenium 给 “开始时间” 和 “结束时间” 传递时间戳。

图片的右侧是对应的html 代码,观察可以发现是一个 form 表单,输入框是一个input 标签,然后再发送Post请求。

在此之前,我尝试过用driver.send_keys() 方法,传递数据,但是由于格式混乱,导致失败了。
下面的这张照片就是我想要的结果,只是我是想通过selenium 去实现而已。
Python selenium对js元素进行增删改查操作_第2张图片
上代码:

# 获取开始时间对象   添加开始时间
start_time = short_driver.find_elements_by_xpath("//div[@class='info_box']/div[1]/input[@name='start_time']")[0]
short_driver.execute_script("arguments[0].%s=arguments[1]" % 'value', start_time, '2019-09-12')
# 获取结束时间对象    添加截止时间
end_time = short_driver.find_elements_by_xpath("//div[@class='info_box']/div[2]/input[@name='end_time']")[0]
short_driver.execute_script("arguments[0].%s=arguments[1]" % 'value', end_time, '2019-09-29')
down_click = short_driver.find_elements_by_xpath("//button[@class='but']")[0]
down_click.click()
time.sleep(2)

程序执行之后,是这样的结果,也就是我想要的结果:
Python selenium对js元素进行增删改查操作_第3张图片
仔细观察右侧的 input 标签,已经多了一个value=“2019-09-12” , value=“2019-09-29” 属性和属性值。
之后,就可以去点击"导出" ,下载音频数据了。

你可能感兴趣的:(【Python爬虫】)