У меня проблема с тем, что я могу заставить свой xpath показывать ноль ошибок в тестовом скрипте, если я использую .isPresent (); чтобы убедиться, что элемент находится на странице, но я получаю ошибки, указывающие, что xpath не может быть найден, если я вместо этого использую команду «click».
Здесь xpath работает:
element(by.xpath('//*[@id="layout-padding"]/ui-view/layout-authen/ui-view/div/div[2]/scroll-detector/settings-section[8]/div[1]/a/i')).isPresent();
Здесь xpath
element(by.xpath('//*[@id="layout-padding"]/ui-view/layout-authen/ui-view/div/div[2]/scroll-detector/settings-section[8]/div[1]/a/i')).click();
Результаты в
Не удалось: элемент не найден с помощью локатора: By (xpath, // * [@ id = "layout-padding"] / ui-view / layout-authen / ui-view / div / div [2] / scroll- детектор / настройки сечение [8] / дел [1] / A / I)
Поиск относительного xpath для текста (что, вероятно, более безопасно с точки зрения будущих изменений, нарушающих его), например, element(by.xpath('.//*[.="TextIWant"]')).isPresent();
работает с isPresent()
, но не с .click()
.
Я пробовал разные инструменты xpath (в Chrome и Firefox плюс надстройка), чтобы проверить xpath, но результат тот же. Почему это может найти элемент, но ошибка при нажатии на него? Этот сценарий находит и нажимает на несколько других элементов, прежде чем он достигнет этой точки. Что мне нужно сделать, чтобы щелкнуть мышью по элементу, который, по-видимому, МОЖЕТ найти?
Вот элемент, который я скопировал:
div class="header"
a href="" class="toggle-bt ng-binding" ng-click="view.showContent = !view.showContent"
i class="fa fa-angle-right" ng-class="view.showContent ? 'fa-angle-down' : 'fa-angle-right'" style=""></i>
TextIWant
</a>
<div class="description ng-binding">
Settings for the TextIWant
</div>
</div>