需要根据另一个div中的文本选择一个复选框

时间:2018-01-15 16:34:41

标签: xpath selenium-webdriver serenity-bdd

<div class="bli-category">
<div class="row ng-scope" ng-repeat="placementtrack by $index">
<div class="col-sm-12">
<div class="col-sm-1 bli-category-checkbox">
<input class="bli-check-box ng-valid" type="checkbox" ng-click="addPlacement" ng-checked="checkedPlacementIndex" ng-model="selectedPlacement">
</div>
<div class="col-sm-8 bli-category-content">
<div class="ng-binding" ng-bind="placement.placementName">page_details</div>
</div>
</div>
</div>

我需要在class='bli-check-box ng-valid'中为class='ng-binding'中的文字选中复选框 当我试图获得像

这样的xpath时
//input[@class='bli-check-box ng-valid'] 

它选择所有4-5个复选框

2 个答案:

答案 0 :(得分:0)

要根据checkbox中的文字选择class='bli-check-box ng-valid'中的class='ng-binding',即 page_details ,您可以使用以下xpath

//div[@class='bli-category']//div[@class='ng-binding' and contains(.,'page_details')]//preceding::input[@class='bli-check-box ng-valid']
  

注意:由于元素是Angular元素,因此在尝试点击之前,您必须为 wait 引出element to be clickable

答案 1 :(得分:0)

//div[text='page_detials' and class='ng-binding']/../preceding-sibling::div//input[class='bli-check-box ng-valid']

上面的xpath首先找到具有您知道的自定义文本的节点。然后它遍历到它的父级,然后遍历它的前一个兄弟,在你的情况下,它包含你所需的input节点。因此,在遍历div之后,您选择其子节点是您所需的input节点。