在 Selenium IDE 中使用通配符断言文本的解决方法

问题描述 投票:0回答:1

我想用Selenium IDE打开这个网页并检查是否有一些文本包含在特定的地方

目前我只能匹配entire文本

First-Play Zoft Touch Dodgeball, Red

为此我使用

Command | Target | Value

`assert text` `xpath=//div[@id='vvp-items-grid']/div/div/div/a/span/span[2]` `First-Play Zoft Touch Dodgeball, Red`

现在,因为Selenium IDE暂时不支持通配符,我不得不使用伤脑筋的方法

我的目标是看看“dodgeball”这个词是否存在。我到底如何将

contains
dodgeball
与那个 xpath 定位器结合使用?

真正让我感到困惑的是,在给定的

示例
中有一个.,?为什么在那里?是“逃避”?因为它对我来说非常混乱和不可读。

xpath selenium-ide
1个回答
0
投票

XPath 中的

.
字符是对context 节点 的引用。将其视为“当前”节点,它提供了计算 XPath 表达式的上下文。您可以将其视为类似于某些面向对象语言中的
this
关键字。

[
]
字符在 XPath 中用于定义一个 predicate,它是一个过滤器,应用于一组节点,返回匹配布尔表达式的子集。
[
]
的内容是一个布尔表达式,XPath 处理器逐个获取节点集中的每个节点,并以该节点作为上下文节点对表达式求值。所以谓词中的
.
是对过滤器当前决定的节点的引用。

例如如果

$x
是一个节点集,那么
$x[true()]
是同一个集合,因为无论上下文节点如何,表达式
true()
始终为真。表达式
$x[contains(., 'dodgeball')]
将返回集合
$x
中的节点子集,其字符串值包含字符串
dodgeball
.

您可以像这样将

assertElementPresent
与 XPath 一起使用:

//div[@id='vvp-items-grid']/div/div/div/a/span/span[2][contains(., 'Dodgeball')]

在这里,XPath 表达式的第一部分 (

//div[@id='vvp-items-grid']/div/div/div/a/span/span[2]
) 将返回一组
span
元素,它后面的谓词 (
[contains(., 'Dodgeball')]
) 将对该集合中的每个元素进行一次评估,用
. 
引用每个有问题的元素,并生成一个新的节点集,该节点集仅包含确实包含
Dodgeball
文本的元素。

注意

contains
函数区分大小写;如果你想找到
Dodgeball
你需要使用字符串
Dodgeball
,而不是
dodgeball
.

© www.soinside.com 2019 - 2024. All rights reserved.