我正在使用 Selenium 网络驱动程序来测试一个按钮,这个按钮可以有这样的文本
<button>Foo</button>
或者它可以看起来像这样带有任何类型或深度的嵌套标签。
<button><span>Foo</span></button>
我试过
Driver.findElement(By.xpath("//*[text()='Foo']"));
但这只会获取直接标记级别的文本。我在 xpath 中添加了一个“//*”,它适用于嵌套元素,但当文本处于直接级别时停止工作。我正在寻找一种 OR 条件,或者我可以让它在两种变体上都起作用的东西。
我正在使用 Java 和 selenium 网络驱动程序。
提前致谢
胡安
最佳答案
试试这个:
driver.findElement(By.xpath("//button[contains(.,'Foo')]"));
这将搜索包含 Foo
文本内容的 button
元素本身或其任何子元素,正是您所要求的。
顺便说一句,在 Java 中,我们通常给对象名称以非大写字母开头,所以它应该是 driver
,而不是 Driver
。
关于java - 我如何创建一个 XPath 来查找按钮文本或按钮内嵌套元素的文本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73625115/