Как получить значение из списка, который не является выпадающим в селене - PullRequest
1 голос
/ 13 мая 2019

<div class="Select form-control undefined Select--single is-searchable has-value"><input name="deal.listdealasset[0].acacode" type="hidden" value="NEWCAR"><div class="Select-control"><span class="Select-multi-value-wrapper" id="react-select-3--value"><div class="Select-value"><span class="Select-value-label" id="react-select-3--value-item" role="option" aria-selected="true">New</span></div><div class="Select-input" style="display: inline-block;"><style>input#undefined::-ms-clear {display: none;}</style><input role="combobox" aria-expanded="false" aria-haspopup="false" aria-activedescendant="react-select-3--value" aria-owns="" style="width: 19px; box-sizing: content-box;" value="" data-rxName="deal.listdealasset[0].acacode"><div style="left: 0px; top: 0px; height: 0px; text-transform: none; letter-spacing: normal; overflow: scroll; font-family: Arial,Helvetica,sans-serif; font-size: 14px; font-style: normal; font-weight: 400; white-space: pre; visibility: hidden; position: absolute;"></div></div></span><span class="Select-arrow-zone"><span class="Select-arrow"></span></span></div></div>

Я пытаюсь выбрать значение из раскрывающегося списка, но его HTML-тег не выбран. Я пробовал разные варианты, но ни один из них не работает.

WebElement optionsList = driver.findElement(By.xpath("//span[contains(@class, 'Select-multi-value-wrapper')]"));
List<WebElement> options = optionsList.findElements(By.xpath("//span[contains(@class, 'Select-value-label')]"));
options.get(0).click();

Я хочу выбрать новое значение из выпадающего списка. [enter image description here]

Я получаю ниже ошибку при выполнении - Элемент не может быть прокручен в поле зрения

Ниже приведен HTML-код страницы-

<div class="Select form-control undefined Select--single is-searchable has-value">
   <input name="deal.listdealasset[0].acacode" type="hidden" value="NEWCAR">
   <div class="Select-control">
      <span class="Select-multi-value-wrapper" id="react-select-3--value">
         <div class="Select-value"><span class="Select-value-label" id="react-select-3--value-item" role="option" aria-selected="true">New</span></div>
         <div class="Select-input" style="display: inline-block;">
            <style>input#undefined::-ms-clear {display: none;}</style>
            <input role="combobox" aria-expanded="false" aria-haspopup="false" aria-activedescendant="react-select-3--value" aria-owns="" style="width: 19px; box-sizing: content-box;" value="" data-rxName="deal.listdealasset[0].acacode">
            <div style="left: 0px; top: 0px; height: 0px; text-transform: none; letter-spacing: normal; overflow: scroll; font-family: Arial,Helvetica,sans-serif; font-size: 14px; font-style: normal; font-weight: 400; white-space: pre; visibility: hidden; position: absolute;"></div>
         </div>
      </span>
      <span class="Select-arrow-zone"><span class="Select-arrow"></span></span>
   </div>
</div>

Ответы [ 4 ]

0 голосов
/ 13 мая 2019

Спасибо за ответ.Это работало с приведенным ниже запросом, т.е. путем объединения ключей отправки и ключей.enter-

driver.findElement(By.id("react-select-3--value")).click();
driver.findElement(By.xpath("/html/body/section/div/div[2]/section/div/from/div/div[3]/div[1]/div/div/div[2]/div/div/div/div/div/span[1]/div[2]/input")).sendKeys("New",Keys.ENTER);
0 голосов
/ 13 мая 2019

Поскольку вы получаете сообщение об ошибке, элемент не может быть прокручен в поле зрения. Вы должны попробовать JavascriptExecutor для прокрутки.

  1. Этот способ позволит вам прокручивать страницу по горизонтали / вертикали. ((JavaScriptExecutor)driver).executeScript("scroll(0,200)") - только прокрутка по вертикали на 200 пикселей

2. Для ввода элемента в фокус

((JavaScriptExecutor)driver).executeScript("arguments[0].scrollIntoView(true);", element);
0 голосов
/ 13 мая 2019

Поскольку для опции 'new' был определен атрибут id, щелчок по объекту осуществляется напрямую с использованием идентификатора.Приведенный ниже код должен работать при условии, что выпадающая кнопка уже нажата.

driver.findElement(By.id("react-select-3--value")).click();
driver.findElement(By.id("react-select-3--value-item")).click();
0 голосов
/ 13 мая 2019

Поскольку ваш раскрывающийся список состоит из тегов Div и span, Выбрать класс не будет работать с селеном.

Код, который вы можете попробовать:

List<WebElement> options = driver.findElements(by.xpath(" your locator"));
for(WebElement element : options){
 if(element.getText().equals(" your value from drop down")){
    element.click();
}
}  

Дайте мне знать, если у вас есть еще вопросы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...