在 Selenium Python 中定位多个元素

2024 年 10 月 6 日 | 3 分钟阅读

Selenium 是一种众所周知的用于 Web 测试和抓取的自动化工具,其基本功能之一是定位网页上的 Web 元素并与之交互的能力。在本文中,我们将研究使用 Python 在 Selenium 中定位多个元素的方法。

定位多个元素简介

在自动化 Web 交互时,您经常需要定位网页上的多个元素来执行各种活动,例如单击按钮、填写表单或删除信息。 Selenium 提供了几种定位这些元素的方法,理解这些方法对于高效自动化至关重要。

定位器

我们应该从某些基本定位器开始

1. 按标签名称查找元素

要通过 HTML 标签名称定位多个元素,可以使用 find_elements_by_tag_name 策略。例如,要跟踪网页上所有连接(<a> 标签)

HTML

代码

2. 按类名称查找元素

可以使用 find_elements_by_class_name 策略按 CSS 类名称定位元素

HTML

代码

3. 按 CSS 选择器查找元素

CSS 选择器在定位元素方面提供了非凡的灵活性。可以使用 find_elements_by_css_selector 技术根据 CSS 选择器查找元素

HTML

代码

4. 按 XPath 查找元素

XPath 是一种强大的语言,用于在 XML 报告(包括 HTML)中定位元素。可以使用 find_elements_by_xpath 技术来定位使用 XPath 表达式的元素

HTML

代码

这些基本定位器为定位元素提供了一个良好的起点。但是,有时您需要更高级的复杂网页策略。

处理动态元素

网页通常具有在初始页面加载后堆积或更改的动态元素。要定位此类元素,您可能需要使用等待工具来确保组件在与之连接之前可用。动态元素(例如使用 AJAX 或 JavaScript 堆叠的元素)在使用 Selenium 进行自动化时需要特别注意。为了确保仅在元素完全堆叠时才定位元素,请使用带有 WebDriverWait 的显式保持。例如,要定位在等待后出现的按钮

代码

处理外壳/框架和 Iframes

网页通常包含轮廓和 iframe,这需要特殊的处理。要与轮廓内的元素关联,您需要先更改为合适的套管

代码

定位器连接

您还可以结合定位器来实现精确的组件定位。例如,要定位 div 中具有特定类的复选框

代码

最佳实践

以下是在 Selenium 中定位元素的几个推荐程序

  • 使用显式暂停:如前所述,始终使用显式回退来确保在与元素通信之前先堆叠元素。
  • 避免使用 time.sleep():避免使用 time.sleep() 进行暂停。最好使用显式支持,因为它们更高效且响应更快。
  • 保持选择器简单:尽可能使用简单可靠的定位器。复杂的定位器可能难以跟上。
  • 保持代码清洁:通过将组件定位逻辑封装在页面对象类中来保持代码组织。

结论

在本文中,我们研究了使用 Python 在 Selenium 中定位多个元素的各种方法。理解这些方法对于高效且强大的 Web 自动化至关重要。通过使用基本和高级定位技术、处理动态元素以及遵循推荐程序,您可以为您的 Web 自动化需求创建可靠且有效的 Selenium 脚本。


下一个主题Selenium C# 教程