java - 具有多个条件的 xpath,其中将包含“a”和“div”标签
问题描述
下面是我想在多个条件下使用 xpath 的完整 HTML 标记。
<div class="request-body comments-left-discription clickme" style="cursor:pointer; " id="12340" title="" data-placement="bottom" data-toggle="tooltip" mode="">
<div class="desc-title">
<a target="_blank" class="site-color" href="http://test://0316">Nutan</a> requested <a href="http://test://0316">Approval</a></div>
<div class="msg-time"><small><a rel="tooltip" data-placement="right" title="" class="color6" href="#" data-original-title="Created on, ">ago</a> (020 )</small></div>
Auto <br>
<div class="btn" id="button">
<a id="accept" class="b" href="javascript:void(0);">APPROVE</a><a id="reject" class="btn" href="javascript:void(0);">REJECT</a> </div>
</div>
在上面的 HTML 中,我想在一个 xpath 语句中使用以下条件,我在下面这样写,它显示无法找到元素。
driver.findElements(By.xpath("//div[starts-with(@id,'1234')"
+ " and //a[contains(text(),'off')]]]"));
解决方案
a
标签位于标签下方div
,因此您可以为此使用下面给出的相对xpath:
driver.findElement(By.xpath("//div[contains(@id,'5e9b7')]//a[contains(text(),'Compensatory-off Approval')]"))
与OP讨论后更新答案:
List<WebElement> elementList = driver.findElements(By.xpath("//div[contains(@id,'5e9b7')]//a[contains(text(),'Compensatory-off Approval')]"));
if(elementList.size()>0){
// Element is present
// Do the required operations here
}
推荐阅读
- angular - 使用 MatMenuTrigger 上的 ViewChild 以编程方式打开 Angular 材质菜单
- android - 在视图模型中更新另一个 LiveData 时触发 LiveData 成员的更新
- php - 调用另一个 laravel 项目的 API
- bash - 为什么 git diff-tree 的输出在我的 post-receive 挂钩中为空?
- android - 为什么 GridLayoutManager 从下到上,从右到左填充项目?
- json - 加载时更改 JSON 文件的编码
- json - 将 Azure Cosmos DB 中存储的实体上的“扩展”元数据存储为 JSON 文档
- typescript - ERROR] 运行子进程 ionic-app-scripts 时发生错误
- python - 多个 JSON 根元素 - Twitter API 流
- powershell - powershell 可以从外部 C# dll 调用子类吗