选择列表的HTML如下所示:
<select name="date_range_month_start" id="date_range_month_start" data-width="109px" data-search="true" style="width: 109px; display: none;">
<option value="0">January</option>
<option value="9">October</option>
<option value="10" selected="selected">November</option>
<option value="11">December</option>
</select>
<div class="chosen-container chosen-container-single chosen-container-single-nosearch" style="width: 109px;" title="" id="date_range_month_start_chosen">
<a class="chosen-single" tabindex="-1">
<span>January</span>
<div><b></b>
</div>
</a>
<div class="chosen-drop">...</div>
</div>
&#13;
但是当我跑步时:
month = driver.find_element_by_id('date_range_month_start_chosen')
month.click() ## make dropdown list visible in browser
mySelect = Select(driver.find_element_by_css_selector("#date_range_month_start"))
print([o.text for o in mySelect.options])
它打印:
['', '', '', '', '', '', '', '', '', '', '', '']
我也尝试了其他一些东西,但到目前为止,在打印此下拉菜单中的文本值时完全没有成功。
答案 0 :(得分:1)
这里有几点:
Select
类来处理select
和options
标记。option
类型的对象选择Select
。以下是供您参考的代码块:
selectmonth = Select(driver.find_element_by_id('date_range_month_start'))
for option in selectmonth.options:
print(option.text)
如果您因ElementNotVisibleException
style="width: 109px; display: none;
使用此代码块而面临element = driver.find_element_by_id('date_range_month_start')
driver.execute_script("return arguments[0].removeAttribute('style');", element)
selectmonth = Select(driver.find_element_by_id('date_range_month_start'))
for option in selectmonth.options:
print(option.text)
:
nextTime
答案 1 :(得分:0)
当屏幕上看不到元素时,Selenium会这样做。
您的display: none
代码中有style
。我想你会发现,如果你删除它,那么你会看到你的期望。
我认为这是因为构建了selenium来模拟用户行为 - 用户无法读取未显示的文本。