千家信息网

自动化测试:盘点Selenium页面元素定位的8种方法

发表于:2026-10-31 作者:千家信息网编辑
千家信息网最后更新 2026年10月31日,前段时间因项目需要,学习Selenium进行自动测试。现在总结整理下Selenium中元素定位的方法,希望可以帮助一些有疑问的朋友。自动化测试步骤 :定位元素→操作元素→验证操作结果→记录测试结果在自
千家信息网最后更新 2026年10月31日自动化测试:盘点Selenium页面元素定位的8种方法

前段时间因项目需要,学习Selenium进行自动测试。现在总结整理下Selenium中元素定位的方法,希望可以帮助一些有疑问的朋友。


自动化测试步骤 :

定位元素→操作元素→验证操作结果→记录测试结果

在自动化测试过程中,测试程序通常的操作页面元素步骤找到Web的页面元素,并赋予到一个存储对象中 (WebElement)对存储页面元素的对象进行操作,例如:点击链接,在输入框中输入字符等,验证页面上的元素是否符合预期。

通过这三个步骤, 我们可以完成一个页面元素的操作, 找到页面元素是很重要的一个步骤。 找不到页面元素,后面就没法做了,Web页面技术的现实复杂性, 造成大量的页面元素很难定位。经常有人不知道怎么定位。

定位方法大全

使用WebDriver对象的findElement函数定义一个Web页面元素

使用findElements函数可以定位页面的多个元素

定位的页面元素需要使用WebElement对象来存储,以便后续使用

常用的定位页面元素方法如下,

定位方法 Java语言实现实例

id 定位 driver.findElement(By.id("id的值"));

name定位 driver.findElement(By.name("name的值"));

链接的全部文字定位 driver.findElement(By.linkText("链接的全部文字"));

链接的部分文字定位 driver.findElement(By.partialLinkText("链接的部分文字"));

css 方式定位 driver.findElement(By.cssSelector("css表达式"));

xpath 方式定位 driver.findElement(By.xpath("xpath表达式"));

Class 名称定位 driver.findElement(By.className("class属性"));

TagName 标签名称定位 driver.findElement(By.tagName("标签名称"));

Jquery方式 Js.executeScript("return jQuery.find("jquery表达式")")

如何定位?

在使用selenium webdriver进行元素定位时,通常使用findElement或findElements方法结合By类返回元素句柄来定位元素

findElement() 方法返回一个元素, 如果没有找到,会抛出一个异 NoElementFindException()

findElements()方法返回多个元素, 如果没有找到,会返回空数组, 不会抛出异常

如何选择定位方法?

策略是,选择简单,稳定的定位方法。

当页面元素有 id属性的时候,尽量使用 id来定位。没有的话,再选择其他定位方法

cssSelector 执行速度快,推荐使用。

定位超链接的时候,可以考虑 linkText或 partialLinkText:但是要注意的是,文本经常发生改变,所以不推荐用。

xpath 功能最强悍。当时执行速度慢,因为需要查找整个DOM, 所以尽量少用。实在没有办法的时候,才使用 xpath。

这里,初学者可以根据下面的实例来一一了解如何进行元素的定位。

环境准备

首先创建一个hello.html页面,用于下面的演示

你好,世界!

我的看云首页



用户名:

密码:

地区:




在同个目录下创建一个find_location.py文件,初始化工作

from selenium import webdriver

import os

# 创建Chrome驱动实例

driver = webdriver.Chrome()

# 启动浏览器并且导航到指定URL

# 这里为了覆盖更多的元素定位,我自己编写了一个本地的hello.html文件。

file_path = 'file:///' + os.path.abspath('hello.html')

driver.get(file_path)

元素定位

通过class定位

find_element_by_class_name(self, name):

find_elements_by_class_name(self, name):

# 定位class名称为"head_title"的元素

head_title = driver.find_element_by_class_name("head_title")

print(head_title.text)

通过id定位

find_element_by_id(self, id_):

find_elements_by_id(self, id_):

# 定位id为"world"的元素

world = driver.find_element_by_id("world")

print(world.text)

通过name属性定位

find_element_by_name(self, name):

find_elements_by_name(self, name):

# 定位name为"username"的元素

username = driver.find_element_by_name("username")

print(username.get_attribute("value"))

通过标签名定位

find_element_by_tag_name(self, name):

find_elements_by_tag_name(self, name):

# 定位标签为

定位 元素 页面 输入 选择 方法 密码 属性 链接 标签 测试 多个 方式 用户 用户名 类名 结果 路径 首页 名称 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 手冲咖啡和咖啡机区别 互联网科技公司的优势 疫情对互联网科技公司影响 碳银互联网科技 九亚互联网科技 未来的互联网科技 天扬科技互联网广告 互联网金融监管科技 银川新华互联网科技学校地址 云创客互联网科技公司 欧洲十大科技互联网公司 栖莱科技互联网股份有限公司 互联网经济与金融科技 上海京穆互联网科技有限公司 深圳互联网科技的发展 互联网企业科技类企业如何做账 智帮互联网科技公司最近动向 美国五大互联网科技公司市值多少 华人运通互联网科技公司 前海云享互联网科技 互联网加科技 麻工互联网科技 互联网科技汛 玖二柒互联网科技公司待遇 滨湖区互联网智能科技产品有哪些 黑云互联网科技有限公司 城市宝互联网科技有限公司 云鲸互联网络科技有限公司 山东蛋芒互联网科技有限公司 东风日产互联网科技公司叫什么
0