У меня есть выпадающий список, созданный с помощью extJS.
<input id="combo-1786-inputEl" data-ref="inputEl" type="text" size="1" name="Query Category" placeholder="Select query category" role="combobox" aria-hidden="false" aria-disabled="false" aria-readonly="false" aria-invalid="true" aria-required="true" aria-haspopup="true" aria-expanded="false" aria-autocomplete="list" class="x-form-field x-form-required-field x-form-text x-form-text-default x-form-invalid-field x-form-invalid-field-default x-form-empty-field x-form-empty-field-default" autocomplete="off" data-componentid="combo-1786" data-errorqtip="<ul class="x-list-plain"><li>This field is required</li></ul>" aria-describedby="combo-1786-ariaErrorEl">
Как мы видим, использовался тег 'input', а не 'select'.
Поэтому, когда я посмотрел вверхкак его заполнить, большинство ответов было сделано в предположении, что он был создан с использованием тега 'select', и он не работал.
Также элементы drop down выбираются из БД только тогда, когда я нажимаю на стрелку навыпадающий список:
Таким образом, выпадающие элементы не могут быть найдены на странице источника.
Может ли кто-нибудь один предложить, какЗаполните такие спуски, используя лучшие практики?
PS-У меня есть обходной путь, но это совсем не хорошая практика кода и совсем не универсальный:
driver.findElement(By.xpath("//*[@id='combo-1731-trigger-picker']")).click();//clicking on the arrow key of the drop down.
//Once the drop down item comes, I am trying to replicate pressing the keyboard arrow key,by sending down arrow key to the drop down item(web element)
//This works for me because I know the extact position of my drop down item in the drop down item list.It will stop working if the postion of the drop item changes
//so below loop just presses the down arrow key required number of times.
for(int i=0;i<5;i++){
driver.findElement(By.xpath("//*[@id='combo-1731-inputEl']")).sendKeys(Keys.ARROW_DOWN);
}
driver.findElement(By.xpath("//*[@id='combo-1731-inputEl']")).sendKeys(Keys.ENTER);
Если вы читаете комментарииупомянуто вместе с приведенным выше кодом, тогда вы сможете понять, насколько хрупка логика.Пожалуйста, помогите.