selenium+python通过JS增加、删除、修改元素属性

Python与SEO 投稿&转载 341浏览 0评论

首先 我们总结几种js常用的定位元素方法

除了id是定位到的是单个element元素对象,其它的都是elements返回的是list对象

1.通过id获取

document.getElementById(“id”)

2.通过name获取

document.getElementsByName(“Name”)

返回的是list

3.通过标签名选取元素

document.getElementsByTagName(“tag”)

4.通过CLASS类选取元素

document.getElementsByClassName(“class”)

兼容性:IE8及其以下版本的浏览器未实现getElementsByClassName方法

5.通过CSS选择器选取元素

document.querySelectorAll(“css selector")

兼容性:IE8及其以下版本的浏览器只支持CSS2标准的选择器语法

代码示例:

#给id为nice的元素 增加 title属性并赋值为“测试title”
js='document.getElementById("nice").setAttribute("title","测试title")'
#给id为nice的元素 删除 title属性
js='document.getElementById("nice").removeAttribute("title")'
#获取id为nice的元素 title属性的值
js='document.getElementById("nice").getAttribute("title")'
#修改id为nice的元素 title属性的值
js='document.getELementById("nice").title="测试"'

实际应用

1.修改元素属性:以百度为例,点击登录页面的立即注册,页面会打开一个新的窗口,原因是:“立即注册”链接元素属性target="_blank"导致。让链接在一个窗口打开就要修改target属性的值为空。

js修改属性示例

代码如下:

from selenium import webdriver
from time import sleep
driver=webdriver.Chrome()
driver.maximize_window()
driver.get('https://www.baidu.com/')
driver.find_element_by_link_text("登录").click()
sleep(1)
#定位“立即注册”位置,修改target属性值为空,让新打开的链接显示在同一个窗口
js='document.getElementsByClassName("pass-reglink pass-link")[0].target=""'
driver.execute_script(js)#执行js语句
driver.find_element_by_link_text("立即注册").click()
sleep(3)
driver.quit()

2.去掉元素属性:以12306的车票查询界面为例,出发日期输入框无法直接输入时间,因为元素的属性是readonly,需要先去掉属性,才可以输入。

from selenium import webdriver
from time import sleep
driver=webdriver.Chrome()
driver.maximize_window()
driver.get('https://www.12306.cn/index/')
sleep(2)
#js去掉属性
js='document.getElementById("train_date").removeAttribute("readonly")'
driver.execute_script(js)
#方式一:通过send_keys()输入值
# driver.find_element_by_id("train_date").clear()
# driver.find_element_by_id("train_date").send_keys('2020-08-20')
#方式二:js修改属性的值
js='document.getElementById("train_date").value="2019-01-12"'
driver.execute_script(js)
sleep(2)
driver.quit()

本文来源:【selenium3+python自动化9-JS增加、删除、修改HTML元素属性
思享SEO博客编辑转载,仅用于参考学习,如有侵权请联系本站修改删除!

扩展阅读

python3报错’encoding’ is an invalid keyword argument for this function

今天碰到一个奇怪的问题,在读txt的时候,报错'encoding' is an invalid keyword argument for this function。于是网上找了一下,这是版本的问题,如果是python2.7版本就会报错。可问题是我用......

什么是ZWNBSP,怎么去除零宽度空白字符

之前转载了一篇获取百度下拉的文章《Python获取百度下拉关键词》今天在使用过程中,发现可以访问接口获取下拉词,但是使用requests请求获取的的却是{}。我再将字符直接写入接口,而非用形参又没有问题。最后无奈将请求的url变量打印,输出的地址也没......

python获取当前上网IP地址的几种方法

在python使用场景中,有时候需要获取当前网络IP来实现一些功能。那么,如何用python来实现这个功能呢?下面,来讲讲我是怎么实现的。 通过访问IP网站获取 之前我一直用的获取的IP网站是 http://httpbin.org/ip 但是,今晚发......

avatar
发表我的评论
取消评论

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址