定位策略 - Selenium Python2024 年 10 月 6 日 | 6 分钟阅读 Selenium 和 Web 自动化在 Web 自动化和测试领域,Selenium 是一款强大且应用广泛的工具。 它使开发人员和测试人员能够自动化与 Web 应用程序的交互,使其成为测试和质量保证过程中不可或缺的一部分。 然而,Selenium 自动化中的关键挑战之一是如何准确有效地在页面上查找 Web 元素。 这就是定位器策略发挥作用的地方。 Web 元素定位器定位器的重要性在于,Selenium 通过识别和控制 Web 元素(如按钮、输入字段和链接)来与 Web 页面进行交互。 为此,Selenium 依赖于定位器,这些定位器是在 Web 页面的 HTML 结构中唯一标识这些元素的工具。 Selenium Python 中的定位器策略是用于从页面查找元素并在相同元素上执行过程的技术。 Selenium 的 Python 模块旨在通过 Python 执行自动化测试。 常见的定位器类型Selenium 提供了不同类型的定位器来处理各种情况。 最常用的定位器包括 ID: 通过其特殊的 id 属性查找元素。 Name: 使用 name 属性来标识元素。 XPath: 使用 XPath 表达式来遍历 HTML 结构。 CSS 选择器: 使用 CSS 选择器进行精确识别。 链接文本和部分链接文本: 根据其可见文本查找链接。 选择正确的定位器策略对于确保自动化脚本的强大、可行和高效至关重要。 正确的定位器策略
使用 ID 和 Name 定位器按 ID 查找元素ID 属性对于 Web 页面上的每个元素都是唯一的。 这使其成为最高效的定位器策略之一。 要通过其 ID 使用 Selenium 在 Python 中查找元素,可以使用 find_element_by_id 策略 按名称查找元素Name 属性是另一种直接定位器策略。 当元素共享一个公共名称属性时,它可能很有用。 要按名称查找元素 这些策略相对容易使用,并且适用于具有唯一 ID 或 Name 属性的元素。 XPath 和 CSS 选择器策略XPath 定位器XPath 是一种灵活的定位器策略,允许您浏览 XML 或 HTML 记录的元素和属性。 您可以使用 XPath 表达式来精确地精确定位元素。 要使用 XPath 查找元素 CSS 选择器定位器CSS 选择器提供了另一种通过其属性及其与不同元素的关联来查找元素的非凡方法。 这就是您可以使用 CSS 选择器的方式 XPath 和 CSS 选择器定位器都在元素 ID 中提供精度,使其在复杂的 Web 页面结构中非常重要。 链接文本和部分链接文本策略按文本查找链接有时,您的自动化内容可能需要与 Web 页面上的链接进行交互。 Selenium 提供了两种定位器策略来实现这一目的:链接文本和部分链接文本。 链接文本: 此策略通过其精确的可见文本跟踪链接。 部分链接文本: 它基于其可见文本的部分匹配查找链接。 这些策略对于浏览 Web 页面和连接到超链接特别有用。 动态和相对 XPath 策略动态 XPath 策略Web 页面通常突出显示逐渐变化的元素,从而进行自动化测试。 动态 XPath 策略允许我们处理这些情况。 部分属性匹配: 使用 contains 来匹配属性值的一部分。 动态元素: 通过使用王牌字符(如 * 并以 ... 开头)来处理动态 ID 或属性。 这是协调具有唯一 ID 的元素的示例 相对 XPathXPath 还允许您相对于已知元素进行浏览,从而提供灵活性和可靠性。 例如,您可以找到与其父元素或同级元素相关的元素。 处理框架和 Shadow DOM帧当前的 Web 应用程序通常使用 iframe(内联框架)将来自不同来源的内容嵌入到 Web 页面中。 在 Selenium 中使用 iframe 时,您需要将设置更改为合适的边缘,以便与其元素进行通信。 要按名称或 ID 更改为边缘,可以使用 另一方面,如果边缘由 WebElement 定位,则可以使用以下方法进行切换 连接到框架内的元素后,您应该使用以下方法返回到默认内容 Shadow DOM某些 Web 应用程序使用 Shadow DOM,这是一种 Web 标准,可将元素和样式封装在容器内。 Selenium 不直接支持 Shadow DOM,但您可以使用 JavaScript 与 Shadow DOM 元素进行通信。 这是访问 Shadow DOM 元素的方式的示例 高级定位器策略在复杂的 Web 页面结构中,您可能需要根据元素与其他元素(如同级元素、祖先元素或子元素)的关联来区分元素。 同级元素: 根据其相对于同一级别上不同元素的位置查找元素。 祖先元素: 向上导航以根据其父元素或祖父元素查找元素。 子元素: 向下交叉以跟踪子元素。 这是查找同级元素的示例 element = driver.find_element_by_xpath( " // input[ @ id = 'current-element ' ] / following- sibling : : input ") 高级定位器策略提供对元素 ID 的精确控制,使其对于复杂的 Web 页面情况非常宝贵。 处理复杂情况管理动态内容取决于 Web 页面经常通过 AJAX 调用动态加载内容。 要处理这种情况,请使用 WebDriverWait 执行显式等待。 这可以确保 Selenium 信任元素会在与元素交互之前打开。 常见陷阱
测试自动化的最佳实践
结论高效的定位器策略是 Python 中成功进行 Selenium 自动化的基础。 它们使您能够精确地与 Web 元素进行交互,即使在动态和复杂的 Web 应用程序中也是如此。 通过了解何时使用每种定位器策略并遵循推荐的程序,您可以创建强大而有效的自动化脚本。 下一个主题Selenium C# 教程 |
我们请求您订阅我们的新闻通讯以获取最新更新。