我正在尝试列出此 Select 元素中的可能选项。
<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')
,它给了我空列表。
然后我尝试使用 selenium.webdriver.support.ui
中的 Select
并通过以下代码获取列表:
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 元素。如果有人可以使这些方法中的任何一种起作用或提出一种有效的替代方法,我将不胜感激。提前致谢。
最佳答案
看起来有一个 另一个同名的元素 不是 select
并且被“按名称”定位器匹配。改进显式定位元素的方式,要求选择
具有所需名称的元素:
elem = driver.find_element_by_css_selector('select[name=sl_coursePage]')
或者,检查 id
:
elem = driver.find_element_by_css_selector('select#sl_coursePage')
关于python - 在 Python Selenium 中获取 Select 元素的选项时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38130625/