ошибка selenium — Не удается найти элемент select

#java #selenium #xpath

#java #selenium #xpath

Вопрос:

Пожалуйста, найдите html-код ниже :

 <div class="col-lg-3 col-md-4">
      <select ui-select2="ui-select2" name="dealer" id="selected_dsd" ng-init="delegate.init()" ng-model="selectedMainStoreTest" ng-change="delegate.getBranchDealers()">
        <option value="">{{'manageChargeCodes.form.fields.choose' |translate}}</option>
        <option ng-repeat="dealer in mainStoreDealerList" value="{{dealer}}">{{dealer.id}} - {{dealer.name}}</option>
      </select>
</div>
  

Из приведенного ниже кода я получу некоторый список опций, и я должен получить выбранные значения, используя XPath

 <option ng-repeat="dealer in mainStoreDealerList" value="{{dealer}}">{{dealer.id}} - {{dealer.name}}</option>
  

Пожалуйста, найдите приведенный ниже код, который я использую для получения выбранного значения

 @FindBy(xpath = "//*[@id="select2-result-label-90"]")
private WebElement mainStoreDealersSelector;

public void selectMainStoreDealers(String mainStoreDealer) {
     System.out.println("Xpath--->" mainStoreDealersSelector);
     selectFromDropDown(mainStoreDealersSelector, mainStoreDealer);
     System.out.println("Completed....");
}
  

И я получаю приведенные ниже результаты во время их печати.

 Xpath--->Proxy element for: org.openqa.selenium.support.pagefactory.DefaultElementLocator@d93a6a5
  

и его получение не удалось с приведенной ниже ошибкой :

 Results :

Tests in error:
  Unable to locate element: {"method":"xpath","selector":"//*[@id="select2-result-label-90"]"}
Command duration or timeout: 100.29 seconds
  

Комментарии:

1. Похоже, что ни один элемент не имеет этого идентификатора в html-коде

Ответ №1:

Попробуйте использовать селектор «ID», иногда при сбое xpath мы используем свойства CSS для выбора элемента.

 @FindBy(id="selected_dsd")
  

Ответ №2:

В вашем HTML нет элемента с select2-result-label-90 id. Если вы пытаетесь выбрать элемент «select», правильный xpath будет

 @FindBy(xpath = "//*[@id='selected_dsd']")