Мне нужно выбрать любой элемент из веб-элемента с атрибутом display: none
который выглядит так:
<div class="some_class">
<select id="some_id" class="some_select_class" style="display: none;">
<option value="1" data-isleaf="false" data-catid="3" data-special_message="" data-adtypeid="0">1</option>
<option value="2" data-isleaf="true" data-catid="4" data-special_message="" data-adtypeid="1">2</option>
</select>
</div>
Я могу сделать это вручную из веб-браузера, но мне нужно сделать это через Selenium в Python. К сожалению, когда у меня есть следующий код:
try:
element = selenium.webdriver.support.ui.WebDriverWait(driver, 60).until(EC.visibility_of_element_located((By.ID, 'some_id')))
selenium.webdriver.support.ui.Select(element).select_by_value('1')
except Exception as ex:
print(ex)
WebDriverWait
выдает исключение со следующей информацией:
Сообщение: ''
Тип исключения - selenium.common.exceptions.TimeoutException
Как я могу достичь взаимодействия этого элемента? Как я могу выбрать любой элемент в этом случае?
Заранее спасибо.
Используйте execute_script()
чтобы установить свойство отображения этого элемента, а затем используйте Selenium Select
для выбора требуемого значения.
Ниже код должен работать для вас:
try:
selenium.webdriver.support.ui.WebDriverWait(driver, 60).until(EC.visibility_of_element_located((By.ID, 'some_other_id_on_page')))
selenium.execute_script("document.getElementById('some_id').style.display='inline-block';")
element = selenium.webdriver.support.ui.WebDriverWait(driver, 60).until(EC.visibility_of_element_located((By.ID, 'some_id')))
selenium.webdriver.support.ui.Select(element).select_by_value('1')
except Exception as ex:
print(ex)
display: none
установлен. Он взаимодействует только с видимыми элементами. Вы можете использоватьexecute_script()
чтобы установить значениеselect
. Сказав это, я подозреваю, что какой-то видимый элемент на странице устанавливаетselect
. Вы, вероятно, должны выяснить, что это за элемент, и взаимодействовать с ним.