我需要从具有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>
我可以从网络浏览器手动完成,但我需要通过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
使用以下信息抛出异常:
消息:''
例外的类型是selenium.common.exceptions.TimeoutException
如何实现此元素的交互?在这种情况下如何选择任何元素?
提前致谢。
答案 0 :(得分:8)
使用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)