如何忽略 Xpath 1.0 中的软连字符?

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

我正在尝试在 Selenium (Java) 中找到以下按钮:

<bdi id="__label1-__xmlview1--Table-Popup-bdi">My But&shy;ton</bdi>
元素的

innerHTML 和innerText 仅返回

My Button
。外部 html 也返回不带连字符的 vale:

<bdi id="__label1-__xmlview1--Table-Popup-bdi">My Button</bdi>

类似问题的答案都不适合我,例如:

   //bdi[translate(., '&shy;', '') = 'My Button']
   //bdi[translate(., '\u00AD', '') = 'My Button']
   //bdi[contains(@id, 'Table') and contains(@id, 'Popup') and contains(translate(text(), '\u00AD', ''), 'My Button')]
   //bdi[contains(@id, 'Table') and contains(@id, 'Popup') and contains(translate(., '\u00AD', ''), 'My Button')]
   //bdi[contains(@id, 'Table') and contains(@id, 'Popup') and translate(text(), '\u00AD', '')='My Button']
   //bdi[contains(@id, 'Table') and contains(@id, 'Popup') and translate(., '\u00AD', '')='My Button']
   //bdi[translate(., '-', '') = 'My Button']

这些都找不到按钮。如果我提供一个没有软连字符的按钮名称,则 xpath 可以正常工作(所以我知道这是连字符的问题)。

replace()
不起作用,因为我正在使用
Xpath 1.0
。在这种情况下,使用
starts-with
ends-with
contains
没有帮助,因为这个问题出现在多个按钮名称中,我正在寻找比单独硬编码每个名称中断更通用的解决方案。

我只有 DOM 可以使用,我的团队与开发人员没有任何联系,因此感谢您的帮助。我很想了解这里发生了什么。

java xml selenium-webdriver xpath
1个回答
0
投票

这可能有用

//bdi[translate(text(), '&shy;', '') = 'My Button']

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