XPath:在进行翻译和规范化时查找包含准确文本的元素-space

XPath: Find element that contains exact text while doing translate and normalize-space

我不确定实现这些目标的正确 XPath 语法:

我知道 translatenormalize-text 使用 contains 的语法,即:

"//*[contains(translate(normalize-space(.), '%s), '%s')]" % ("ABC', 'abc'", "abc")
 #                                                           ↑ Translation   ↑ Target

当使用 "abc".

搜索时,这将找到 包含 "ABC" 的元素,例如 "ABCD"

但是,当我不使用 contains 时,我正在努力寻找正确的语法,即文本内容必须 完全 "ABC" 而不是 "ABCD" 并与 "abc" 一起被发现 – 同时执行 normalize-space.

我知道您可以找到准确的文本,例如通过使用:

//*[normalize-space(text()) = "ABC"]

如何组合这些部分?


注意:我正在使用 Firefox for Selenium 通过 driver.find_element_by_xpath 查找元素。据我所知,Firefox 使用 XPath 1 而不是像 XPath 2 这样的任何更新版本。

您可以在 XPath 表达式中使用 or 运算符。
所以你可以使用这个定位器:

//*[normalize-space(text()) = "ABC" or normalize-space(text()) = "abc"]

如果您使用 //*[translate(normalize-space(), 'abc', 'ABC') = 'ABC'],您 select 元素的规范化字符串值是 ABC.

的任意大小写版本