Невозможно выбрать несколько опций в раскрывающемся списке автозаполнения с помощью веб-драйвера Селена Python - PullRequest
0 голосов
/ 05 марта 2019

Я пытаюсь автоматизировать веб-страницу, написанную на Angular, и у меня есть выпадающий список автозаполнения, в котором много элементов.Я пытаюсь нажать на каждый элемент и проверить, заполняет ли он все поля ниже.Вот innerHTML для этого выпадающего списка

<div class="mat-autocomplete-panel mat-autocomplete-visible" role="listbox" id="mat-autocomplete-0">
<!---->
<mat-option _ngcontent-c3="" class="mat-option" role="option" tabindex="0" id="mat-option-67" aria-selected="false" aria-disabled="false">
    <!---->
    <span class="mat-option-text">  Miss </span>
    <div class="mat-option-ripple mat-ripple" mat-ripple=""></div>
</mat-option>
<mat-option _ngcontent-c3="" class="mat-option" role="option" tabindex="0" id="mat-option-68" aria-selected="false" aria-disabled="false">
    <!---->
    <span class="mat-option-text">  SLCA </span>
    <div class="mat-option-ripple mat-ripple" mat-ripple=""></div>
    </mat-option>
<mat-option _ngcontent-c3="" class="mat-option mat-selected" role="option" tabindex="0" id="mat-option-21" aria-selected="true" aria-disabled="false">

Я пытался использовать select, но выдает ошибку, говорящую, что тег должен быть select not div .Так есть ли способ обойти это или мне нужно переключить другой язык (например, JS, чтобы написать автоматизировать тестирование на угловых).Пожалуйста, помогите.

1 Ответ

1 голос
/ 05 марта 2019

Используйте следующий код:

Если раскрывающийся список автозаполнения закрывается после выбора одного из параметров:

driver.find_element_by_xpath("//div[@id='mat-autocomplete-0']").click()

all_options = driver.find_elements_by_xpath("//span[@class='mat-option-text']")
i = 0
while i<len(all_options) : 
    driver.find_element_by_xpath("//div[@id='mat-autocomplete-0']").click()
    driver.find_elements_by_xpath("//span[@class='mat-option-text']")[i].click()
    i=i+1

Если выпадающий список автозаполнения остается прежним после выбора одного из параметров:

driver.find_element_by_xpath("//div[@id='mat-autocomplete-0']").click()    

all_options = driver.find_elements_by_xpath("//span[@class='mat-option-text']")
i = 0
while i<len(all_options) : 
    driver.find_elements_by_xpath("//span[@class='mat-option-text']")[i].click()
    i=i+1

Надеюсь, это поможет !!!

...