我正在使用Selify Web驱动程序来测试一个按钮,这个按钮可以有这样的文本

<button>Foo</button>

或者它可以看起来像这样,带有任何类型或深度的嵌套标记.

<button><span>Foo</span></button>

我试着go 做

Driver.findElement(By.xpath("//*[text()='Foo']")); 

但这只会使文本处于立即标记级别.我在XPath中添加了一个"//*",它将对嵌套元素起作用,但当文本处于立即级别时就不起作用了.我正在寻找一种或条件或什么,我可以得到这两个变化的工作.

我使用的是Java和Selify网络驱动程序.

提前谢谢你,

胡安

推荐答案

试试这个:

driver.findElement(By.xpath("//button[contains(.,'Foo')]")); 

This will search for button element containing Foo text content in itself or any it child, exactly what you asking for.
BTW in Java we normally give objects names starting with non-capital letter, so it should be driver, not Driver there.

Java相关问答推荐

表格栏上的事件过滤器在PFA中不起作用

Saxon 9:如何从Java扩展函数中的net.sf.saxon.expr. XPathContent中获取声明的变量

Mongo DB Bson和Java:在子文档中添加和返回仅存在于父文档中的字段?

无法在Java中将hhmmss格式的时间解析为LocalTime

Android -如何修复Java.time.zone. ZoneRulesExcept:未知时区ID:Europe/Kyiv

我可以从Java模块中排除maven资源文件夹吗?

@ EnableRouting注释在Kotlin项目中不工作

Cucumber TestNG Assert失败,出现java. lang. Numbercycle异常

如何在返回bigint []值的子查询中使用any?

Quarkus keycloat配置不工作.quarkus. keycloak. policy—enforcer. enable = true在. yaml表示中不工作

无法在org. openjfx:javafx—fxml:21的下列变体之间进行 Select

Spark上下文在向Spark提交数据集时具有内容,但Spark在实际构建它时发现它为空

AssertJ Java:多条件断言

如何在运行时动态创建表(使用Java、JPA、SprringBoot)

我如何为我的Java抵押贷款代码执行加薪操作(&Q)

如何获得凌空cookies ,并设置它在下一个请求- android

如果List是一个抽象接口,那么Collectors.toList()如何处理流呢?

嘲笑黄瓜中的对象

转换为JSON字符串时,日期按天递减-Java

如何使用java区分以下结果