2016-06-30 238 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')) 
相關問題