如何在下拉菜单中查看文本选项

时间:2017-11-01 22:20:10

标签: python selenium selenium-webdriver drop-down-menu webdriver

选择列表的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;
&#13;
&#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])

它打印: ['', '', '', '', '', '', '', '', '', '', '', ''] 我也尝试了其他一些东西,但到目前为止,在打印此下拉菜单中的文本值时完全没有成功。

2 个答案:

答案 0 :(得分:1)

这里有几点:

  1. 使用Select类来处理selectoptions标记。
  2. 我们应该尝试仅通过option类型的对象选择Select
  3. 以下是供您参考的代码块:

    selectmonth = Select(driver.find_element_by_id('date_range_month_start'))
    for option in selectmonth.options:
        print(option.text)      
    
  4. 更新

    如果您因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来模拟用户行为 - 用户无法读取未显示的文本。