java - 按类和名称查找 Web 元素(按钮)
问题描述
我对 Selenium 很陌生。
我试图找到按钮验证(见下文)而不是使用 xpath。
<div class="order">
<a style="float: left;" href="#143207" class="VoidDoc ui-button ui-corner-all ui-widget" role="button"> Void </a>
<a style="float: left;" href="validatedocumentation.php?documentId=143207&origin=viewreferral.php&OrderId=836829" class="ui-button ui-corner-all ui-widget" role="button"> Validate </a>
<a class="signDocBehalf ui-button ui-corner-all ui-widget" style="float: left;" href="#143207#20263#836829" role="button">Sign</a>
<a style="float: left;" href="editdocumentation.php?documentId=143207&origin=viewreferral.php" class="ui-button ui-corner-all ui-widget" role="button"> Edit </a>
</div>
我试图通过类名(不幸的是不是唯一的)和按钮的文本(“验证”)来查看:
.....Driver.findElement(By.xpath("//a[@class='ui-button ui-corner-all ui-widget' and text()='Validate']")).click();
我也试过
.....Driver.findElement(By.xpath("//div[@class='ui-button ui-corner-all ui-widget' and text()='Validate']")).click();
收到错误:
no such element: Unable to locate element: {"method":"xpath","selector":"//div[@class='ui-button ui-corner-all ui-widget' and text()='Validate']"}
(Session info: chrome=94.0.4606.81)
我猜是因为"<a>" is nested in "<div>"
,如果我错了,请纠正我。
如何识别这个按钮是正确的。
请给我你的好建议。
解决方案
你几乎是正确的。
您正在使用的 xpath
//a[@class='ui-button ui-corner-all ui-widget' and text()='Validate']
部分正确。文本 Validate有尾随空格,因此您必须使用contains
使用这个 xpath :
//a[@class='ui-button ui-corner-all ui-widget' and contains(text(),'Validate')]
PS:如果我们有唯一的条目,请检查dev tools
(谷歌浏览器)。HTML DOM
检查步骤:
Press F12 in Chrome
-> 转到element
部分 -> 执行CTRL + F
-> 然后粘贴xpath
并查看,如果您想要element
的是否使用匹配节点突出显示。1/1
既然你提到你不想使用 xpath,但不知道为什么?
如果是这种情况,请像这样使用 css 选择器:
a.ui-button.ui-corner-all.ui-widget[role='button'][href^='validatedocumentation.php?']
推荐阅读
- python - 使用python中的txt文件中的数据进行计算
- python - 在 VS Code 中以 # 或 ## 开头的注释是否可以有不同的颜色和字体设置?
- java - 使用按钮添加开关 - Android Studio
- javascript - react-location-picker中未定义react下一个应用程序获取错误窗口
- clang - getelementptr llvm ir 指令参数
- azure - 写操作(每 4MB,每 10000 次)是什么意思?
- python - 将前导零添加到日期和时间字符串中的小时数
- spring-boot - Jersey 如何从请求中屏蔽密码
- python - 获取在函数内部创建的变量值
- sql - SQLite Sum 和 CASE 语句