typescript 查找元素-在 Selenium 中编写 XPath 的主要方法有哪些?

2023-08-27 0 9,850 百度已收录

Selenium 中的 XPath。 完整的手册在本文中,我们将通过示例了解什么是 XPath、XPath 的类型以及如何在 Selenium 中编写 XPath。

在编写 Selenium 自动化脚本时,我们必须定位元素。 如果我们无法使用 id、class、name 等定位器来定位元素,我们可以使用 XPath 来定位网页上的元素。

XPath 提供了选择任何定位器来支持您的条件的能力typescript 查找元素,并且它允许选择要动态搜索的网页元素。 然而,XPath 并不是 Selenium 提供的用于发现任何元素的唯一过程。

在这篇博文中,我将描述如何使用 XPath 和各种 XPath 表达式来定位其特征随着操作或页面刷新而动态变化的复杂或动态项目。

Selenium 中的 XPath 是什么?

XPath(也称为 XML 路径)是 Selenium 中最常用的定位器之一,它允许您浏览 HTML 格式的页面。 使用 HTML DOM 结构,可以定位 HTML 和 XML 文档网页中的每个元素。

让我介绍一下XPath的语法。

上图所示的XPath句型中:

**// **:表示当前节点 Tagname:单个节点的Tagname@:选择属性。 属性:表示节点的属性值:表示所选属性的值

为了查找 Web 元素typescript 查找元素,Selenium 提供了以下类型的 XPath 定位器:

用于查找网页上不同元素的 XPath 定位器

**ID

**

使用元素 ID 查找该元素。

** 班级名称

**

使用元素的类名查找该元素。

**姓名

**

通过名称查找元素。

**链接文字

**

查找具有链接文本的元素。

**X路径

**

查找动态元素以及不同网页元素之间的通信需要使用 XPath。

**CSS路径

**

此外,CSS 路径可以发现缺少名称、类或 ID 的项目。

Selenium 中的 XPath 类型

以下是 Selenium 中可用的两种 XPath 类型。

XPath 绝对

绝对 XPath 是一种从根节点定位元素的快速且简单的技术,但它有一个主要缺点,如果元素的路径发生更改,XPath 将失败。

XPath 句子开头的单个正斜杠 (/) 意味着您可以从根节点选择一个元素。

以下是绝对 XPath 表达式的反例。

绝对 X 路径。

/html/body/div/header/div/div/div[2]/div/div[2]/nav/div/ul/li[8]/a

相对 XPath

相对 XPath 从 HTML DOM 结构的中间开始。 开头的双正斜杠 (//) 意味着它可以在网站上的任何位置搜索该元素。

通过相对XPath,我们可以从HTML DOM结构的中间开始,而不需要复杂的XPath。

以下是相对 XPath 表达式的反例。

相对 XPath。 //*[@id="primary-menu-single"]/li[8]/a

如何在 Selenium 中编写 XPath?

请仔细阅读以下内容,如何在 Selenium 中编写 XPath。

基本 XPath

使用基本 XPath 表达式从 XML 文档中选择一个节点或节点列表,如下图所示。

以下是一些直接 XPath 表达式的其他反例。

Xpath = //输入[@type='电子邮件']

Xpath = //textarea[@class= 'wpcf7-form-control wpcf7-textarea'] 。

Xpath = //输入[@value='立即提交']

Xpath = //a[@href=']

XPath 使用 contains()

当任何属性的值动态更改时,将应用其中一种方法,称为 contains()。

我们尝试在这些类型的 XPath 中查找所提供的 XPath 指示的文本不完整的元素。

该名称的完整值是“your-website”,但您仅使用了部分值“website”。

//输入[包含(@name, '站点')]

XPath 使用 OR 和 AND

在 XPath 中,当使用 OR 表达式时,有两个替代条件,并且第一个或第二个条件应该为真,或者可能两者都为真。 在这些情况下,任一条件都必须为真才能识别元素。

OR 表达式在下面的 XPath 中使用来确定一个条件或两个条件是否为真。

在下图中,突出显示了两个基本组件。

X 路径。 //*[@type='email' 或 @name='your-name']

AND 语句中使用了两个条件,这两个条件都必须为真才能识别特定元素。

Xpath://input[@type='text' 和 @name='your-name']

在下图中,突出显示了具有“type”和“name”属性的“name”元素。 结果是,当两个要求都为真时,AND 表达式会找到元素。

XPath 使用starts-with 函数

首先使用此功能来识别自上一次页面刷新或网站上的任何其他操作以来已更改的元素。 如果属性值未更改,您还可以使用此公式查找与用于查找元素的属性的起始文本相匹配的静态属性值。

例如,假设特定元素的类值频繁更改。

类 = 'wpcf7'

类 = 'wpcf8'

类 = 'wpcf9'

在下面的表达式中,有 5 个“data-name”属性值以“your”开头的组件。

Xpath: //span[starts-with(@data-name ,'your')]

XPath 使用 text()

使用元素的实际文本,我们可以检测此表达式中的元素。 此元素中通常使用名称、用户名、电子邮件标签等元素的文本,或“保存”或“提交”等按钮或表单标签。

Xpath://span[text()='联系我们']

XPath 使用索引

这句话用于定位列表中的特定元素。 例如,如果借助属性生成 5 个不同的元素,但只需要第二个或第三个成员,则可以使用索引来定位元素。

指示性表达句型。

XPath: (//*[@attribute='value'])[index] 。

因为在下面的表达式中,有很多具有相同属性值的输入标签,我们可以使用索引来定位这些元素。

Xpath: (//输入[@type='text'] )[2]

下面表达式中的 'type' 属性找到 3 个元素,但是,如果我们只想要第二个元素,我们可以使用索引 2 找到它。

在 Selenium 中编写 XPath 的主要方法有哪些? XPath 使用以下内容

使用下面的公式查找当前节点的下一个元素。 它用于一些复杂的 XPath。 XPath 的语法如下所示。

语法。 //标签名[@attribute='value']//以下::标签名

在下面的反例中,我尝试使用当前节点来查找项目,例如使用当前节点的名称来查找电子邮件地址。

Xpath://input[@name='your-name']//以下::input[1]。

XPath 使用 follow-sibling

当查找当前节点之后的同一级别或节点的元素时,将使用以下同级元素。 下面给出以下兄弟元素的句型。

语法。 //标签名[@attribute='value']//following-sibiling::标签名

使用上面的 XPath

使用前面的表达式将元素直接定位在当前节点的前面。

您可以使用上面的内容来定位当前节点之前的所有元素。 前面的句型如下。

语法。 //标签名[@attribute='value']//前面::标签名

在下面的反例中,我使用当前节点的电话号码来尝试查找电子邮件地址。

Xpath://input[@name='your-phone']//前面的::input[1]。

下面的XPath中,电话号码是当前节点,电子邮件是后面的一个节点,所以向前移动就可以找到。

使用 peced-sibling 的 XPath

要查找当前节点的同级节点之前的元素,需要使用前置同级表达式。

语法。 //标签名[@attribute='value']//前置同级::标签名

在下面的反例中,我使用当前节点来尝试定位网站测试标签。

XPath 使用子进程

正如表达式的名称所暗示的,它用于定位特定节点的每个子元素。

语法://tagname[@attribute='value']//child::tagname

在下面的计数器示例中,输入是父节点跨度的子节点,目标是使用子表达式获取 name 元素的 XPath。

Xpath://span[@data-name='your-name']//child::input

使用父节点的 XPath

使用此短语查找当前节点的父节点。

语法: //标签名[@attribute='value']/parent::标签名

下面显示了使用子节点查找父节点的 XPath 逆向示例。 这里,span是一个子节点,利用父节点表达式,我们可以从这个子节点确定父节点div的XPath。

Xpat://span[@data-name='你的名字']//parent::div

如何捕获加载程序图像的 XPath

当我们自动化 Selenium 网站时,屏幕上会短暂显示一些元素。 当我开始编写 XPath 代码时,该元素早已从屏幕上消失了。

为了说明这个问题,让我们尝试找到加载图像的 XPath,因为它们需要一段时间才能显示在屏幕上。

查找加载程序的 XPath 的步骤如下。

步骤 1:当页面首次加载时,按 F12 检查元素。 接下来,选择“来源”选项卡以查看下图。

步骤 2:当我们在屏幕上看到加载元素时,只需按 F8 或单击下面突出显示的图像中的位置即可。

第 3 步:返回元素页面并开始在那里编写定位器。

步骤 4:XPath 完成后,返回并从源中选择恢复选项。

上述方法允许您暂停执行,将元素保留在屏幕上,同时查找元素的 XPath。

总结

我们在之前有关 selenium 定位器的教程中了解了所有不同类型的 XPath。 有了这个,我们可以使用 contains()、Start-with() 和 text() 创建简单的 XPath,也可以使用上面和前面的内容创建更复杂的 XPath。

本文还介绍了如何定位动态元素的 XPath。 例如,替代 XPath 轴可用于查找使用标准 XPath 无法找到的动态元素。

我希望上面文章中的信息超出了您昨天学习 XPath 的预期。 享受你的测试吧!

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

悟空资源网 typescript typescript 查找元素-在 Selenium 中编写 XPath 的主要方法有哪些? https://www.wkzy.net/game/166688.html

常见问题

相关文章

官方客服团队

为您解决烦忧 - 24小时在线 专业服务