Невозможно установить флажки с элементом списка в раскрывающемся списке из-за Timeoutexception - PullRequest
0 голосов
/ 23 октября 2019

Я пытаюсь выполнить автоматизацию на веб-странице с помощью веб-драйвера Chrome в Селена Python.

В одном случае у меня есть выпадающий список с 80 элементами списка, каждый элемент списка предшествует флажок ввода. Мне нужно нажать на 2 флажка из данного списка, совпадающего с текстом элемента списка.

Невозможно установить флажки с элементом списка в раскрывающемся списке из-за TimeoutException.

Я получаю исключение времени ожидания при попытке щелкнуть элемент списка с флажками в раскрывающемся списке. Примечание:

1. Также наблюдалось, что индикатор загрузки появляется после щелчка по раскрывающемуся списку с помощью moveToElement.

2.В раскрывающемся списке имеется около 80 элементов списка и полоса прокрутки. 3.Этот раскрывающийся список присутствует сразу же для другого раскрывающегося списка, указанного в приведенной ниже ссылке.

Я следовал: Невозможно выбрать элемент списка в неупорядоченном списке с помощью python selenium

Начал использовать ожидание веб-драйвера с ожидаемой концепцией условий.

   HTML :
   HTML code:
   =========
   <div class="ms-drop bottom" style="display: block;">
       <ul style="max-height: 400px;">
           <li class="ms-select-all">      
               <label><input type="checkbox" data-name="selectAlls_osVer">
                   [Select all]
               </label>    
           </li>

           <li class="" style="false">     
               <label class=""><input type="checkbox" data-name="selectItems_osVer" value="KK">
                   <span>
                     apq40 
                   </span>
               </label>        
           </li>

           <li class="" style="false">
               <label class=""><input type="checkbox" data-name="selectItems_osVer" value="KK_MR1">
                   <span>
                     sdm845  
                   </span>
               </label>        
           </li>

           <li class="" style="false">
               <label class=""><input type="checkbox" data-name="selectItems_osVer" value="KK_MR2">
                   <span>
                     msm8996 
                   </span>
               </label>        
           </li>
       <li class="" style="false">
               <label class=""><input type="checkbox" data-name="selectItems_osVer" value="KK_MR2">
                   <span>
                     msm8996e 
                   </span>
               </label>        
           </li>
            .....
            ..... so on (approximately 80 elements are there)
       </ul>
   </div>

**** Пробовал с приведенным ниже кодом, но получал исключение тайм-аута: ****

Язык: Python Driver: SeleniumБраузер: Chrome Webdriver: Chromewebdriver

Я получаю исключение тайм-аута при попытке щелкнуть элемент списка с флажками в раскрывающемся списке.

chipset = [ 'sdm845', 'msm8996e' ]

for i in range(len(chipset)):
    chipset_name = "{}".format(chipset[i])

    WebDriverWait(driver,20).until(EC.element_to_be_clickable
    ((By.XPATH,"//div[@class='ms-drop bottom']//ul//li[.//span
[normalize-space(text())='"+ chipset_name + "']]//input"))).click()

Примечание: 1. Также наблюдается индикатор загрузкипоявляется при нажатии на раскрывающийся список с помощью moveToElement.

2. В раскрывающемся списке содержится около 80 элементов списка и полоса прокрутки. Этот выпадающий список присутствует сразу для другого выпадающего списка.

Мой элемент видим, и это 2-й и 4-й элементы списка, которые должны быть выбраны в раскрывающемся списке, и он видим. Хотя исключение тайм-аута происходит. Это происходит из-за того, что появляется значок загрузки?

Также я хотел бы знать, как действовать, если желаемый элемент списка, который нужно выбрать, невидим, и он появляется в конце списка ичтобы сделать его видимым, мне нужно выполнить прокрутку вниз по списку.

Ожидается: необходимо выполнить операцию щелчка по флажкам ввода требуемого элемента списка, совпадающим с каждой строкой в ​​данном списке.

Факт: исключение истечения времени ожидания Появляется при попытке найти элемент списка в раскрывающемся меню, содержащем полосу прокрутки.

1 Ответ

0 голосов
/ 24 октября 2019

Исходя из вашего кода, вы ждете до 20 секунд для загрузки элементов в раскрывающемся списке, но, возможно, у вас есть проблемы с прокруткой в ​​Selenium, которая не может найти все элементы (все параметры), хитрость в том, чтобы ждать толькопервая опция в поле со списком, тогда вы должны знать, что раскрывающийся список открыт, и вы можете выбрать элемент,

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