如何使用“从web元素中选择任何元素”;显示:无“;在Python中使用Selenium属性

如何使用“从web元素中选择任何元素”;显示:无“;在Python中使用Selenium属性,python,python-2.7,selenium,selenium-webdriver,Python,Python 2.7,Selenium,Selenium Webdriver,我需要使用display:none属性从web元素中选择如下所示的任何元素: <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"

我需要使用
display:none
属性从web元素中选择如下所示的任何元素:

<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>
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)

Selenium不会与设置了
display:none
的元素交互。它只与可见元素交互。您可以使用
execute\u script()
来设置
select
的值。话虽如此,我怀疑页面上的某个可见元素正在设置
select
。您可能应该弄清楚那是什么元素,并与之交互。@Richard如果使用execute_脚本,则不会触发从选择中激活的触发器,因此我将无法看到新元素弹出窗口,例如WebDriverWait将抛出异常,因为web元素不是真正可见的OK。请参阅更新的代码,对于first WebDriverWait,您可以检查页面上任何其他元素的可见性,以便我们确保网页已正确加载,然后我们可以更改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)