XPath:在进行翻译和规范化时查找包含准确文本的元素-space
XPath: Find element that contains exact text while doing translate and normalize-space
我不确定实现这些目标的正确 XPath 语法:
网页上元素的文字内容应该正好"ABC"
,除了:
我想使用 translate
以便我可以使用 "abc"
进行搜索并找到 "ABC"
我想做normalize-space
我知道 translate
和 normalize-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
.
的任意大小写版本
我不确定实现这些目标的正确 XPath 语法:
网页上元素的文字内容应该正好
"ABC"
,除了:我想使用
translate
以便我可以使用"abc"
进行搜索并找到"ABC"
我想做
normalize-space
我知道 translate
和 normalize-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
.