Нужна помощь в поиске / щелчке выпадающего списка в таблице с использованием селена

Я работаю над скриптом, чтобы найти / щелкнуть раскрывающийся список и щелкнуть любой элемент из выбранного раскрывающегося списка, используя селен и питон.

Ниже приведен код и хотелось бы, чтобы ваша помощь помогла улучшить его правильность и правильность, если это неправильный способ сделать это.

Фрагмент кода:

table1 = self.browser.find_element_by_id('user-list-table') trows = table1.find_elements_by_tag_name('tr') for trow in trows: tcols = trow.find_element_by_tag_name('td') for tcol in tcols: if tcol ==("//button[@id='dropdownMenu1'][3]"): self.browser.find_element_by_xpath(tcol).click() self.browser.find_element_by_link("//a[contains(text(),'Edit User')][3]").click() 

HTML-фрагмент:

 <table class="table table-bordered table-striped datatable" id="user-list-table"> <thead> <tr> <th>Status</th> <th>First Name</th> <th>Last Name</th> <th>Employee ID</th> <th>Patient Load<br>Permanent | Temporary</th> <th>No. of Tasks<br>Priority | Total</th> <th>Tasks Per Day (completed)<br>Week | Month | Quarter</th> <th class="text-right">User Actions</th> </tr> </thead> <tbody> <tr class="odd"> <td class="text-center"><i class="status status-available">01</i></td> <td>Tracy</td> <td>Jones</td> <td>1001</td> <td>10 | 5</td> <td>30 | 50</td> <td>45 | 60 | 50</td> <td class="text-right"> <div class="dropdown"> <button class="btn btn-default dropdown-toggle" type="button" id="dropdownMenu1" data-toggle="dropdown" aria-expanded="true"> User Actions <span class="caret"></span> </button> <ul class="dropdown-menu dropdown-menu-right" role="menu"> <li role="presentation"><a role="menuitem" tabindex="-1" href="patient-assignment.html"><i class="fa fa-exchange"></i> Assign Patients</a></li> <li role="presentation"><a role="menuitem" tabindex="-1" href="#" data-toggle="modal" data-target="#User-Calendar-Today"><i class="fa fa-calendar"></i> Todays Availability</a></li> <li role="presentation"><a role="menuitem" tabindex="-1" href="user-profile.html"><i class="fa fa-user"></i> View Profile</a></li> <li role="presentation"><a role="menuitem" tabindex="-1" href="user-account.html"><i class="fa fa-pencil"></i> Edit User</a></li> <li role="presentation" class="divider"></li> <li role="presentation"><a role="menuitem" tabindex="-1" href="#"><i class="fa fa-times-circle"></i> Deactivate User</a></li> </ul> </div> </td> </tr> 

One Solution collect form web for “Нужна помощь в поиске / щелчке выпадающего списка в таблице с использованием селена”

Хотя я не уверен, я понимаю проблему, которую вы испытываете (или пытаетесь решить) достаточно хорошо, чтобы помочь, я попробую.

Если бы я был вами, пытаясь щелкнуть определенные элементы из списка, я бы просто создал список этих элементов в первую очередь, а затем пропустил его один раз, щелкнув по мере того, как я пошел. Код может выглядеть примерно так.

 item_list = driver.find_elements_by_xpath('//button[@id="dropdownMenu1"]') #you can add further specifications as necessary 

По крайней мере, вы можете установить пару for loops если вы только сначала создадите список элементов, которые хотите проверить. См. Документы .

Это вообще помогает? Я вижу, что вы уже находите элементы (а не только один элемент), поэтому я, вероятно, не понимаю проблему достаточно хорошо, чтобы полностью консультировать. Подумайте о том, чтобы дать дополнительные разъяснения о вашей проблеме / цели в комментариях или изменить свои вопросы. Спасибо и удачи!

EDIT: Хотя это подразумевается в моем ответе, я должен быть яснее. Я считаю, что если вы просто пытаетесь достичь элементов с помощью циклов и проверок, вероятно, имеет смысл использовать XPATH. он лучше всего подходит для поиска очень конкретных (одноразовых) элементов в XML-документе. Просто моя таппанс.

ВТОРОЙ РЕДАКТИРОВАНИЕ:

Вот список ссылок, которые вам нужны (я думаю):

 list_of_links = driver.find_elements_by_xpath('//li[@role="presentation"]/a') # len(list) == 99 

Затем, как сказано выше, вы можете просто .click() этот список и .click() каждую ссылку.

 for link in list_of_links: link.click() 

Дайте мне знать, если это сработает. Удачи!!

  • тест веб-страницы с селеном python: очень медленное выполнение
  • Именование файла при загрузке с помощью Selenium Webdriver
  • Как разбирать элементы драйвера Selenium?
  • Как подражать Firefox «Сохранить файл» -> ОК в Python
  • Загрузить файл из sharepoint с помощью selenium webdriver python
  • Python Selenium - AttributeError: объект WebElement не имеет атрибута sendKeys
  • Как передать HttpAuthentication в selenium webdriver
  • ImportError: нет модуля с именем base
  • Python - лучший язык программирования в мире.