我需要从具有如下display: none属性的web元素中选择任何元素:
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>
我可以通过Web浏览器手动完成此操作,但是我需要通过Python中的Selenium进行操作。不幸的是,当我有以下代码时:
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 抛出带有以下信息的异常:
WebDriverWait
信息: ‘’
异常的类型是 selenium.common.exceptions.TimeoutException
selenium.common.exceptions.TimeoutException
如何实现此元素的交互?在这种情况下,如何选择任何元素?
提前致谢。
使用execute_script()来设置元件的显示特性,然后使用硒Select,用于选择所需的值。
execute_script()
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)