2016-06-30 206 views
1

我想列出在这个Select元素中可能的选项。在Python中选择元素的选项时出错Selenium

<select id="sl_coursePage" onchange="document.frm.submit();" name="sl_coursePage"> 
    <option selected="selected" value="0"></option> 
    <option value="1"></option> 
    <option value="2"></option> 
    <option value="3"></option> 
    <option value="4"></option> 
    <option value="5"></option> 
    <option value="6"></option> 
    <option value="7"></option> 
    <option value="8"></option> 
    <option value="9"></option> 
    <option value="10"></option> 
</select> 

我能找到的元素本身罚款elem = driver.get_element_by_name('sl_coursePage'),但后来当我试图通过使用elem.get_elements_by_xpath('.//*')elem.get_elements_by_tag_name('option')列出的选项,它给了我空列表。

于是我试图用Selectselenium.webdriver.support.ui和下面的代码获取列表:

elem = driver.get_element_by_name('sl_coursePage') 
select = Select(elem) 
list = select.options 

然而,当我试试这个,它提出了这样的错误:

selenium.common.exceptions.UnexpectedTagNameException: Message: Select only works on <select> elements, not on <input> 

我不当它的标签显示“select”时,不明白这不是一个Select元素。如果任何人能够得到这些方法的任何一种工作或提出一种可行的替代方法,我将非常感激。提前致谢。

回答

0

看起来好像有一个另一个同名的元素这不是select并且通过“按名称”定位符进行匹配。提高你的定位元素明确要求select元素与所需的名称的方式:

elem = driver.find_element_by_css_selector('select[name=sl_coursePage]') 

或者,检查id

elem = driver.find_element_by_css_selector('select#sl_coursePage') 
+0

非常感谢!那就是诀窍。并感谢您的快速回复! – ENPM

0

您正在试图获取由名

元素
elem = driver.get_element_by_name('sl_coursePage') 

尝试从id或css选择器获取它,而不是像

elem =driver.findElement(By.id('sl_coursePage')) 
相关问题