Selenium 自动化 —— 定位页面元素

更多内容请关注我的 Selenium 自动化 专栏:

  1. 入门和 Hello World 实例
  2. 使用WebDriverManager自动下载驱动
  3. Selenium IDE录制、回放、导出Java源码
  4. 浏览器窗口操作
  5. 切换浏览器窗口

使用 Selenium 做自动化,我们不仅仅是打开一个网页,这只是万里长城的第一步,最重要的是,我们需要查找页面的元素,比如找到搜索框,找到提交按钮等等,后续输入文本,点击提交按钮。

总之,查找元素,是最关键的步骤之一。

本文,我们将系统的介绍使用 Selenium 定位页面元素的常用方式。

1. 一个元素

说到定位之前,我们先介绍WebDriver 查找元素的两个通用方法。

有些元素,页面中只有一个,比如某个id的元素(原则上id不能重复)。

第一个方法是查找只有一个元素的方法,返回的是一个元素对象 WebElement:

java 复制代码
WebElement nameEle = driver.findElement(By.id("fname"));

暂时忽略 findElement() 的参数,稍后我们会重点介绍。

2. 多个元素

返回的是 WebElement 列表。

java 复制代码
List<WebElement> eles = driver.findElements(By.tagName("input"));

3. 通过id查找元素

介绍完两个find方法,我们接下来就看看它的参数。

最常用是通过ID定位元素。

java 复制代码
WebElement nameEle = driver.findElement(By.id("su"));

4. 通过name查找元素

在表单中,我们的元素通常有name属性,我们也可以通过它定位元素.

java 复制代码
WebElement nameEle = driver.findElement(By.name("fname"));

5. 通过class查找元素

某些情况下,我们要定位的元素没有 id,也没有 name,这是在做爬虫时是很常见的情况!这时我们可以通过class 定位。

java 复制代码
List<WebElement> eleList = driver.findElements(By.className("w3-button"));

但是特别注意:尽量不要使用class定位元素,因为class是样式,网站的样式随时都可能会变的。

当然你会说id或name也可能会变,但是概率比class小很多!

6. 通过标签查找元素

因为我们定位的是元素,元素都是标签,那自然html tag也是很重要的定位方式。

java 复制代码
List<WebElement> elementList = driver.findElements(By.tagName("input"));

到这里,我们介绍了最常用的元素定位的方法,通过这些方法,我们可以找到某些元素,或者做一些操作。

但是这些太过简单,下一篇文章,我会介绍更强大的XPath定位元素的方法,它不仅可以实现本文介绍的几种方法,还有更多、更强、更灵活的元素定位方法。

关注CSDN - 兰亭序咖啡,和我一起学习探讨 Selenium 自动化和其它技术。

相关推荐
XiaoMu_0013 小时前
自动化漏洞扫描与预警平台
运维·网络·自动化
生而为虫4 小时前
[Windows] 【浏览器自动化精灵V1.0】用Excel表格控制浏览器的自动化
运维·自动化
我的xiaodoujiao4 小时前
使用 Python 语言 从 0 到 1 搭建完整 Web UI自动化测试学习系列 46--撰写 README项目说明文档文件
python·学习·测试工具·pytest
淡忘_cx5 小时前
使用Jenkins自动化部署vue项目(2.528.2版本)
vue.js·自动化·jenkins
风指引着方向5 小时前
昇腾 AI 开发生产力工具:CANN CLI 的高级使用与自动化脚本编写
运维·人工智能·自动化
掌心向暖RPA自动化5 小时前
影刀RPA如何在网页和桌面软件中实现自动滚动长截图?最好同时支持横向滚动纵向滚动的?
经验分享·自动化·影刀rpa·长截图
淡忘_cx6 小时前
使用Jenkins自动化部署spring-java项目+宝塔重启项目命令(2.528.2版本)
java·自动化·jenkins
种时光的人6 小时前
CANN生态自动调优:cann-auto-tune 让AIGC大模型性能优化自动化、极致化
性能优化·自动化·aigc
我的xiaodoujiao6 小时前
使用 Python 语言 从 0 到 1 搭建完整 Web UI自动化测试学习系列 47--设置Selenium以无头模式运行代码
python·学习·selenium·测试工具·pytest
聆风吟º20 小时前
CANN开源项目实战指南:使用oam-tools构建自动化故障诊断与运维可观测性体系
运维·开源·自动化·cann