在 Selenium Python 中定位单个元素

2024 年 10 月 6 日 | 阅读时间:6 分钟

Selenium 是一个用于 Web 自动化功能的强大工具,它提供了一个 Python 模块,改进了自动化 Web 任务的最常见方法。 无论您是尝试 Web 应用程序还是自动化冗余的 Web 通信,Selenium 的 Python 关联都提供了一个强大且易于使用的编程接口。 在本系列的两部分文章中,我们将探讨在 Selenium Python 中查找单个元素的基本思想。

定位单个元素

Selenium Python 遵循不同的定位器策略来查找网页上的元素。 无论如何,您需要从 Selenium 的 web driver.common.by 模块导入 By 类。

from selenium.webdriver.common.by import By

Selenium Python 使用八种基本的定位器策略来查找单个元素

By.ID

此策略查找具有与预定值匹配的 ID 质量的主要元素。 如果未找到匹配元素,则会引发 NoSuchElementException。

要使用 By.ID 查找注册表单并与之交互,您可以使用以下 Python 代码

Python

By.XPATH

此策略使用 XPath 实例查找主要元素。 如果未找到匹配元素,则会引发 NoSuchElementException。

Python

By.NAME

它查找具有与提供的估值匹配的名称属性的主要元素。 与 ID 一样,如果未找到匹配项,则会引发 NoSuchElementException。

您可以使用 By.NAME 查找搜索表单并与之交互

Python

By.TAG_NAME

它查找具有预定 HTML 标签名称的主要元素。 如果未找到匹配元素,则会引发 NoSuchElementException。

您可以使用 By.TAG_NAME 查找标题并与之关联

Python

By.LINK_TEXT

它查找具有与提供的估值完全匹配的接口文本的主要元素。 如果未找到匹配的连接文本,则会引发 NoSuchElementException。

By.PARTIAL_LINK_TEXT

此策略跟踪具有与提供的估值匹配的部分连接文本的主要元素。 如果未找到匹配项,则会引发 NoSuchElementException。 您可以使用 By.LINK_TEXT 和 By.PARTIAL_LINK_TEXT 查找并与这些连接交互

Python

By.CLASS_NAME

此策略查找具有匹配的类特征名称的主要元素。 如果未找到匹配项,则会引发 NoSuchElementException。

您可以使用 By.CLASS_NAME 查找并与“重要”消息交互

Python

By.CSS_SELECTOR

它使用匹配的 CSS 选择器查找主要元素。 如果未找到匹配元素,则会引发 NoSuchElementException。

您可以使用 By.CSS_SELECTOR 查找并连接样式部分

Python

实际示例

示例 1

按 ID 定位元素

假设您正在自动化一个网站上的登录交互,该网站具有以下 HTML 结构

要使用 By.ID 查找并与用户名输入字段交互,您可以使用以下 Python 代码

Python

示例 2

按 XPATH 定位元素

假设您有一个网页,其中包含各种输出元素,并且您需要使用 XPath 表达式查找主要输出。 这就是您可以做到这一点的方式

使用以下 Python 代码查找主要输出元素

Python

示例 3

按部分连接文本定位链接

假设您需要在具有以下结构的网页上单击文本为“继续”的连接

您可以使用 By.PARTIAL_LINK_TEXT 查找并点击连接

Python

最佳实践

1. 关注 ID 和名称定位器

在可能的情况下,使用 By.ID 或 By.NAME 定位器,因为它们是定位元素的最快、最可靠的策略。 这些定位器非常适合识别页面上的特殊元素。

2. 使用 CSS 选择器实现适应性

By.CSS_SELECTOR 提供了在选择元素方面的适应性,这要归功于不同的特征和条件。 这是一个强大的定位器策略,特别是当您想通过类、属性或与其他元素的关联来跟踪元素时。

3. 避免过度使用 XPath

虽然 XPath 具有适应性,但它可能比其他定位器策略慢且更有意义。 保留 XPath 用于其他策略不足的复杂情况。

4. 使用等待处理动态内容

网页经常包含异步加载的动态内容。 利用明确的等待(WebDriverWait)来保证元素在对其执行操作之前就已可用并准备好进行关联。

5. 保持您的代码可行

构建您的代码,使其有效。 在 Web 页面结构开发时,将定位器存储在因素或常量中以统一更改。

6. 使用打印语句进行调试

在调查元素区域的问题时,将打印语句添加到您的代码中,以查看每一步发生了什么。 这可能有助于进行调试。

结论

Selenium 及其 Python 使我们能够与 Web 元素进行通信,从而有效地实现任务自动化和测试 Web 应用程序。 这些策略是 Selenium Python 工具包中的基本工具,允许您查明和控制网页上的单个元素。


下一个主题Selenium C# 教程