我正在尝试在 Selenium (Java) 中找到以下按钮:
<bdi id="__label1-__xmlview1--Table-Popup-bdi">My But­ton</bdi>
元素的innerHTML 和innerText 仅返回
My Button
。外部 html 也返回不带连字符的 vale:
<bdi id="__label1-__xmlview1--Table-Popup-bdi">My Button</bdi>
类似问题的答案都不适合我,例如:
//bdi[translate(., '­', '') = '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 可以使用,我的团队与开发人员没有任何联系,因此感谢您的帮助。我很想了解这里发生了什么。
这可能有用
//bdi[translate(text(), '­', '') = 'My Button']