Выбор элемента из списка с помощью Selenium и Python - PullRequest
0 голосов
/ 04 августа 2020

Я пытаюсь выбрать элемент из списка с помощью selenium / python, и у меня возникают проблемы с загрузкой элементов и возможностью взаимодействия. Я думаю, проблема в том, что веб-сайт не загружает html для этого раздела, пока не будет щелкнуть раскрывающийся список, но я не уверен, как go решить эту проблему. Вот как выглядит html, если я щелкну по исходному тексту:

<label data-lang="4003">Impact</label>
<select id="impact">
    <option value="" selected data-lang="48">Select</option>
</select>

Если я посмотрю на него с помощью инструментов проверки chrome, я вижу следующее:

<label data-lang="4003">Impact</label>
<div class="select-wrapper cascading-dropdown-loading initialized">
  <span class="caret">▼</span>
  <input type="text" class="select-dropdown" readonly="true" data-activates="select-options-e89d2a9c-3be1-67a1-6f4b-32c36b38f6eb" value="Select">
  <ul id="select-options-e89d2a9c-3be1-67a1-6f4b-32c36b38f6eb" class="dropdown-content select-dropdown ">
    <li class="">
      <span>Select</span>
    </li>
    <li class="">
      <span>High</span>
    </li>
    <li class="">
      <span>Medium</span>
    </li>
    <li class="">
      <span>Low</span>
    </li>
    <li class="">
      <span>None</span>
    </li>
  </ul>
  <select id="impact" class="initialized" data-select-id="e89d2a9c-3be1-67a1-6f4b-32c36b38f6eb">                          
    <option value selected data-lang="48">Select</option>
    <option value="HIGH">High</option>
    <option value="MEDIUM">Medium</option>
    <option value="LOW">Low</option>
    <option value="NONE">None</option>
  </select>
</div>

data-select-id также, кажется, генерируется случайным образом, поскольку он изменяется каждый раз, когда я обновляю sh страницу.

Пока что мне удалось получить список доступных опций, используя следующие code:

select = driver.find_element_by_id("impact")
options = [x for x in select.find_elements_by_tag_name("option")]
for element in options:
    print(element.get_attribute("value"))

Попытка манипулировать списком с помощью чего-то вроде element.click (), похоже, не работает и выдает только ошибку «Ошибка: сообщение: элемент не взаимодействует: элемент в настоящее время не отображается и им нельзя манипулировать "

Я также безуспешно пытался использовать Select с таким кодом. Я безуспешно использовал все три варианта выбора: select_by_value, select_by_visible_test и select_by_index.

select = Select(driver.find_element_by_id('impact'))
select = select_by_value("HIGH")

Я также пробовал исследовать select.options, который возвращает список объектов, которые выглядят например:

<selenium.webdriver.remote.webelement.WebElement (session="513ab2b2bfc1c3c738af19e69230a763", element="d00bf83d-3772-4357-b6da-1702a12ffda3")>

, но я не уверен, как манипулировать ими, чтобы делать с ними что-то еще. Идентификаторы сеанса и элементов также меняются между запусками.

Любая помощь, указывающая мне в правильном направлении, будет принята с благодарностью!

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