在做selenium web自动化的时候,有时通过selenium定位不到,或无法操作元素,这个时候就需要通过js来

定位/操作元素,然后通过selenium自带的execute_script()方法去执行js语句。下面介绍几种js的定位方法。

一.ID

id的值都是唯一的,所以当存在id字段时可优先使用

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<script> function a(){
alert(document.getElementById("button_id").style.display='block') //id定位
}
</script>
<body>
<button style="display: none" id="button_id">隐藏</button>
<button onclick="a()">点击</button>
</body>
</html>

二.NAME

name值定位元素的话返回的为list,用下标取值即可。如下通过name定位并执行点击事件。

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<script> function a(){
document.getElementsByName("button_name")[0].click() //name定位
}
function b(){
alert("word")
}
</script>
<body>
<span name="button_name" onclick="b()">隐藏</span>
<button onclick="a()">点击</button>
</body>
</html>

三.TAG_NAME

tag_name对应的便是标签名称,返回的也是list集合。

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<script> function a(){ document.getElementsByTagName("input")[0].value="请输入内容" //输入内容
} </script>
<body>
<input>
<button onclick="a()">点击</button>
</body>
</html>

四.CLASS_NAME

class_name对应的值是class,返回list集合

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<script> function a(){
alert(document.getElementsByClassName("h2_class")[0].style.backgroundImage) //classname定位
}
</script>
<body>
<h2 class="h2_class" style="display: block; background-image: url('https://static.geetest.com/captcha_v3/batch/v3/25173/2023-01-3')"></h2>
<button onclick="a()">点击</button>
</body>
</html>

五.CSS

css定位有两个方法,下面一一演示看下。

1.querySelectorAll():返回所有匹配的结果,list集合。

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<script>
function a(){
document.querySelectorAll("input[name='2']")[1].value="123" //返回全部
}
</script>
<body>
<div class="liming">
<div>
<input name="2">
</div>
<div>
<input name="2">
</div>
</div>
<button onclick="a()">点击</button>
</body>
</html>

2.querySelector():不管匹配结果有多少个,只返回第一个。

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<script>
function a(){
alert(document.querySelector("div[class='liming']>div:nth-child(2)>input").getAttribute("name"))
}
</script>
<body>
<div class="liming">
<div>
<input name="1">
</div>
<div>
<input name="2">
</div>
</div>
<button onclick="a()">点击</button>
</body>
</html>
文章来源:https://www.cnblogs.com/lihongtaoya/ ,请勿转载

最新文章

  1. HTML5的特性,发展,及使用
  2. 最新Xcode7.x环境下上架iOS App到AppStore 完整流程
  3. SCP注意事项
  4. js 区分数据类型
  5. sql server 常用脚本(日常查询所需)
  6. 【Linux】LAMP环境的搭建
  7. tcp/ip的一些概念
  8. Java基础(8):方法重载的4个依据与例子
  9. php调试工具总结
  10. The New Debugger
  11. !!流行的php面试题及答案
  12. arcgis通过 Python 使用工具 获得结果信息
  13. php url字符转义操作
  14. eclipse快捷键总结
  15. JAXB--学习1
  16. eclipse 异常Unhandled event loop exception
  17. SqlDataAdapter的方法之一Fill (DataSet dataset, String datatable)解释
  18. NAS简介
  19. cocos2dx 3.0 它 使用std::bind更换CC_CALLBACK_N
  20. sass快速入门

热门文章

  1. Python基础之模块:3、os模块 sys模块 json模块 json实战
  2. python常用库总结
  3. ubuntu生成pem证书连接服务器(已验证)
  4. 嵌入式-C语言基础:数组指针
  5. 说一下 ArrayDeque 和 LinkedList 的区别?
  6. 小米mini路由器刷breed不死鸟和潘多拉固件
  7. MIUI12解决安装charles抓包安装证书后还是提示证书不安全
  8. 模拟Promise的功能
  9. 【离线数仓】Day01-用户行为数据采集:数仓概念、需求及架构、数据生成及采集、linux命令及其他组件常见知识
  10. feDisplacementMap滤镜实现水波纹效果,计算动态值。