Я пытаюсь написать тест, который выбирает элемент и затем нажимает на этот элемент. В Chrome я вижу, что элемент можно найти, наведя курсор на ::before
, но xpath не распознает его как действительный локатор.
Интересующий меня HTML-код:
<custom-checkbox ng-model="additionalOption.isSelectedForReorder"
data-selenium-id="AquasoftTrialCheckbox_AutoReorder_true_IsTrialOnly_false"
value="AquaSoft Daily 15pk" ng-change="vm.additonalOptionSelected(additionalOption)"
accessibility-label="Select brand"
class="ng-untouched ng-valid ng-isolate-scope ng-not-empty ng-dirty ng-valid-parse"
aria-invalid="false" style="">
<div class="CustomCheckbox Radiobox">
<input ng-attr-id="{{vm.id}}" type="checkbox" ng-disabled="vm.isDisabled" id="293515277">
<label ng-attr-for="{{vm.id}}" ng-transclude="" for="293515277">
::before
<span class="d-none ng-binding ng-scope">Select brand</span>
</label>
</div>
</custom-checkbox>`
Я пытался использовать by.xpath("//custom-checkbox[@data-selenium-id='AquasoftTrialCheckbox_AutoReorder_true_IsTrialOnly_false']")
by.xpath("//custom-checkbox[@data-selenium-id='AquasoftTrialCheckbox_AutoReorder_true_IsTrialOnly_false']/div/input"
by.xpath("//custom-checkbox[@data-selenium-id='AquasoftTrialCheckbox_AutoReorder_true_IsTrialOnly_false']"/div/label/span
и by.xpath("//custom-checkbox[@data-selenium-id='AquasoftTrialCheckbox_AutoReorder_true_IsTrialOnly_false']/div/label/::before"
Когда я пробую первый, я получаю ошибку, перехваченную щелчком, а другие просто говорят, что не могут найти элемент.