Выпадающий список selectByValue не работает для выбора пункта меню - PullRequest
0 голосов
/ 07 декабря 2018

Снимок экрана Я могу найти и щелкнуть элемент следующим образом:

WebElement clienttype = driver.findElement(By.cssSelector("button[class='ui-button ui-widget ui-state-default ui-button-icon-only ui-corner-right ui-button-icon']"));
clienttype.click();

Однако при попытке выбрать один из пунктов меню следующим образом:

Select dropdown = new Select(clienttype);
dropdown.selectByValue("PUBLIC-CUSTOMERS");

он просто обходит и продолжает выполнение скрипта.Я также попробовал selectByVisibleText, и он тоже не работает.Предложения?

ДОБАВЛЕНИЕ HTML ...

    <span class="ui-helper-hidden-accessible" role="status" aria-live="polite">8 results are available, use up and down arrow keys to navigate.</span>
    <button tabindex="-1" title="" class="ui-button ui-widget ui-state-default ui-button-icon-only ui-corner-right ui-button-icon" 
role="button" aria-disabled="false" type="button">
    <span class="ui-button-icon-primary ui-icon ui-icon-triangle-1-s"></span>
    <span class="ui-button-text"></span>
    </button>
    </span>

ОБНОВЛЕНИЕ HTML с отображением значений меню>

<div class="questionContainer ">
<div class="left questionBody" id="QS005056A70C8E9da8UA3v-vDA7UcC-label-body" required="false">
<label class="questionlabel bold " id="QS005056A70C8E9da8UA3v-vDA7UcC-label" for="QS005056A70C8E9da8UA3v-vDA7UcC">
Client Type:<span class="required">*</span></label>
    </div>
<div class="left answerBody">
        <div class="left">     
<div id="QS005056A70C8E9da8UA3v-vDA7UcC-answer-body">          
<div class="select_holder select_jquery">              
<select tabindex="0" id="QS005056A70C8E9da8UA3v-vDA7UcC" aria-describedby="QS005056A70C8E9da8UA3v-vDA7UcC-instructions" 
aria-labelledby="QS005056A70C8E9da8UA3v-vDA7UcC-label" style="display: none;" required="true" level="0" autocomplete="off" 
responsetype="STATIC_MENU" questiondefid="QD005056A70C8E9da8UAyACwDA8EcC" totalorder="0" questionid="QS005056A70C8E9da8UA3v-vDA7UcC" val="" overwrite="1">                   
<option value=""></option>                                             
<option aria-selected="false" value="PUBLIC-CUSTOMERS" ps="0">PUBLIC-CUSTOMERS</option>                                               
<option aria-selected="false" value="Option 2" ps="1">Option 2</option>

<option aria-selected="false" value="Option 3" ps="2">Option 3</option>

<option aria-selected="false" value="Option 4 " ps="3">Option 4 </option>

<option aria-selected="false" value="Option 5" ps="4">Option 5</option>

<option aria-selected="false" value="Option 6" ps="5">Option 6</option>

<option aria-selected="false" value="Option 7" ps="6">Option 7r</option>

<option value="clear">(clear)</option>

</select><span><input class="ui-widget ui-widget-content ui-corner-left ui-autocomplete-input" id="QS005056A70C8E9da8UA3v-vDA7UcC_input" autocomplete="off">
<span class="ui-helper-hidden-accessible" role="status" aria-live="polite">8 results are available, use up and down arrow keys to navigate.</span>
<button tabindex="-1" title="" class="ui-button ui-widget ui-state-default ui-button-icon-only ui-corner-right ui-button-icon" role="button" aria-disabled="false" type="button">
<span class="ui-button-icon-primary ui-icon ui-icon-triangle-1-s"></span><span class="ui-button-text"></span></button></span>

</div>

</div>

</div>

<div class="validationResult clear" id="QS005056A70C8E9da8UA3v-vDA7UcC-validationResult"></div>

<div class="clear"></div>

<div class="instructions" id="QS005056A70C8E9da8UA3v-vDA7UcC-instructions"></div>

</div>

<div class="clear"></div>

<div class="no_dispaly" id="QS005056A70C8E9da8UA3v-vDA7UcC-rules"></div>

<div class="no_dispaly" id="QS005056A70C8E9da8UA3v-vDA7UcC-json"></div>

</div>

1 Ответ

0 голосов
/ 10 февраля 2019

Вы не передали элемент выбора типа.Это была проблема, почему selectByValue не работает.

В обновленном HTML, который вы разместили, есть элемент select.

Для этого источника страницы передайте элемент select конструктору new Select().Затем вы можете использовать метод selectByValue.

Если идентификатор не генерируется динамически, тогда переменная clienttype должна быть:

WebElement clienttype = driver.findElement(By.id("QS005056A70C8E9da8UA3v-vDA7UcC"));

В противном случае:

WebElement clienttype = driver.findElement(By.cssSelector("div.questionContainer > div.left.answerBody > div > div > div > select"));

Тогда вы можете использовать следующий код:

Select dropdown = new Select(clienttype);
dropdown.selectByValue("PUBLIC-CUSTOMERS");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...