Selenium / xpath从下拉菜单中获取文本

时间:2014-07-16 00:51:51

标签: python html selenium xpath

在Selenium中,有没有办法从下拉菜单中获取文本,然后将其放入Python的列表中?

假设:

<select id="zoo">
    <option value="30">
    Lion
    </option>

    <option value="10">
    Elephant
    </option>

    <option value="5">
    Zebra
    </option>
</select>

如何将Lion,Elephant和Zebra放入列表中?

2 个答案:

答案 0 :(得分:1)

使用selenium.webdriver.support.select.Select()并获取.options

  

options

     

返回属于此选择标记的所有选项的列表

from selenium.webdriver.support.select import Select

select = Select(driver.find_element_by_id('zoo'))
print [option.text for option in select.options]

其中driverwebdriver个实例。

DEMO(使用this w3schools page(是的,抱歉w3schools :)):

>>> from selenium import webdriver
>>> from selenium.webdriver.support.select import Select
>>> driver = webdriver.Firefox()
>>> driver.get('http://www.w3schools.com/tags/tryit.asp?filename=tryhtml_select')
>>> driver.switch_to.frame('view')
>>> select = Select(driver.find_element_by_tag_name('select'))
>>> [option.text for option in select.options]
[u'Volvo', u'Saab', u'Opel', u'Audi']

请注意,此页面上的select元素没有id,因此我只是使用find_element_by_tag_name()找到它。另请注意,那里有iframes,因此我必须切换到相应的iframe才能找到该元素。

希望有所帮助。

答案 1 :(得分:0)

这对我有用:

select = Select(driver.find_element_by_tag_name('select'))

text_list = []

for option in select.find_elements_by_tag_name('option'):
    text_list.append(option.text)

感谢您的帮助!