Selenium实战教程系列(二)---元素定位

news/2025/1/7 21:55:36/

Selenium webdriver能够模拟人对浏览器进行操作的前提是界面元素的定位。元素的定位可以说是Selenium自动化脚本的基础。这一小节笔者将介绍如何在selenium中进行元素的定位。

定位元素的方法

Selenium中提供了以下定位元素的方法: 首先看一个HTML文件 test_page.:

<html><body><form class="form-test" name="register" action="success.html" method="post"><h3>注册账号</h3><a href="/home">Home Page</a><table bgcolor="aqua"><tr><td>昵称:</td><td><input id="input username" type="text" name="username" class="input"></td></tr><tr><td>密码:</td><td><input type="text" name="password"></td></tr><tr><td>确认密码:</td><td><input type="text" name="confPassword"></td></tr><tr><td>性别:</td><td><input type="radio" name="sex" value="man" checked>男<input type="radio" name="sex" value="woman">女</td></tr></table></form></body></html>

1. id

通过元素的id来完成username输入框的定位。

require 'selenium-webdriver'
dr = Selenium::WebDriver.for :chrome
dr.get "http://test.html"# by id
dr.find_element(:id, 'input username').click

2.name

通过元素的name属性来完成对username输入框的定位。

require 'selenium-webdriver'
dr = Selenium::WebDriver.for :chrome
dr.get "http://test.html"# by name
dr.find_element(:name, 'username').click

3. class name

通过元素的class属性来完成对username输入框的定位。

require 'selenium-webdriver'
dr = Selenium::WebDriver.for :chrome
dr.get "http://test.html"# by name
dr.find_element(:class, 'input').click

4. link text和partial link text

通过链接元素的text属性来完成Home Page链接的定位。

require 'selenium-webdriver'
dr = Selenium::WebDriver.for :chrome
dr.get "http://test.html"# by link_text
link_text = dr.find_element(:link_text, 'Home Page').get_text
puts link_text# by partial_link_text
link_text = dr.find_element(:partial_link_text, 'Home').get_text
puts link_text

5. tag name

通过标签的name来完成header元素的定位

require 'selenium-webdriver'
dr = Selenium::WebDriver.for :chrome
dr.get "http://test.html"# by tag name
header_text = dr.find_element(:tag_name, 'h3').get_text
puts header_text

6. xpath

xpath是用来定位HTML文档中元素的通用方法,有一套自己的语法规则,支持各种函数,可以说是一种最全面的定位方法。我在开发Selenium自动化用例的过程中,最多使用的就是xpath。 这里只用简单的例子说明xpath的定位使用,具体的xpath的使用将在另外的专题中介绍。

require 'selenium-webdriver'
dr = Selenium::WebDriver.for :chrome
dr.get "http://test.html"# by xpath
dr.find_element(:xpath, "//tr/td/input[@value='women']").click

7. css selector

css selector和xpath一样,也是功能非常强大的定位方法。但是与xpath不同,css selector只能支持向后定位,而xpath可以支持向前和向后定位。 下面的例子讲展示如何用css selector定位xpath例子中的同一个元素。

require 'selenium-webdriver'
dr = Selenium::WebDriver.for :chrome
dr.get "http://test.html"# by css selector
dr.find_element(:css, "tr>td>input[value='women']").click

定位一组元素

Selenium中支持同时获取一组元素的定位,这在处理多选项选择,或者表格元素的时候非常有用。

require 'selenium-webdriver'
dr = Selenium::WebDriver.for :chrome
dr.get "http://test.html"# Get number of items
num_of_tds = dr.find_elements(:tag_name, "td").count


http://www.ppmy.cn/news/57550.html

相关文章

《Netty》从零开始学netty源码(四十七)之PooledByteBuf的方法

setBytes() 从channel中读取数据并写到PooledByteBuf中&#xff0c;分配缓存的过程与getBytes一样&#xff0c;只是duplicate为false。 capacity() 动态更新容量&#xff0c;根据新传入的容量值更改length。 如果新容量值与旧值相同则无需扩容如果为非池化内存则根据新容量值…

TypeScript算法题实战——剑指 Offer篇(2)

Typescript 是 Javascript 的超集。Typescript 为 Javascript 增加类型能力&#xff0c;主要为了避免 JS 弱类型下产生的各种有意无意的问题。Typescript 的出现大大改善了开发体验&#xff0c;增强了代码的可维护性和稳定性&#xff0c;如今已被越来越多的大型前端项目选用。 …

培训技能 GET

技巧 调整语速和语调&#xff1a;讲解者需要注意语速和语调的调整&#xff0c;以便让听众更好地理解和接受内容。 使用案例和实例&#xff1a;讲解者可以使用案例和实例来帮助听众更好地理解和记忆内容&#xff0c;同时也可以增强听众的兴趣和参与度。 互动式讲解&#xff1a…

【实战项目开发技术分享】ROS自动安装以及卸载教程

文章目录 前言一、ROS安装教程1.1 添加ROS软件包源1.2 安装ROS核心软件包1.3 rosdep初始化以及更新1.4 配置ROS环境变量1.5 安装依赖工具和ROS工具1.6 测试ROS安装是否成功二、ROS卸载教程三、自动安装ROS脚本(以Noetic为例 )3.1 方法一3.2 方法二四、自动卸载ROS(以Noetic为…

Java Web应用开发 ——作业七

一.单项选择题&#xff08;共7题,28.7分&#xff09; 1 Servlet程序的入口点是&#xff08; &#xff09;。 A、 init&#xff08;&#xff09; B、 main&#xff08;&#xff09; C、 service&#xff08;&#xff09; D、 doGet&#xff08;&#xff09; 正确答案&#…

osgGA::CameraManipulator类computeHomePosition函数分析

osgGA::CameraManipulator类computeHomePosition函数代码如下&#xff1a; void CameraManipulator::computeHomePosition(const osg::Camera *camera, bool useBoundingBox) {if (getNode()){osg::BoundingSphere boundingSphere;OSG_INFO<<" CameraManipulator::…

NLP实战:快递单信息抽取-基于ERNIE1.0 预训练模型

目录 一、介绍 二、代码 2.1前期准备 2.2加载自定义数据集 2.3数据处理 2.4数据读入 2.5PaddleNLP一键加载预训练模型 2.6设置Fine-Tune优化策略&#xff0c;模型配置 2.7模型训练与评估 ​编辑 2.8模型预测 三、总结 原文&#xff1a; 一、介绍 命名实体识别&…

Leetcode力扣秋招刷题路-0851

从0开始的秋招刷题路&#xff0c;记录下所刷每道题的题解&#xff0c;帮助自己回顾总结 851. 喧闹和富有 有一组 n 个人作为实验对象&#xff0c;从 0 到 n - 1 编号&#xff0c;其中每个人都有不同数目的钱&#xff0c;以及不同程度的安静值&#xff08;quietness&#xff0…