python - 在 Python Selenium 中获取 Select 元素的选项时出错

标签 python html selenium select drop-down-menu

我正在尝试列出此 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/

相关文章:

python - 为什么 is(AN()) == ideA()) 不同于 A() is A()?

python - NLTK——WordNet : list of long words

javascript - 在 Firefox 中使用 Hammer Pinch 方向错误 - 适用于所有其他浏览器

java - 如何在 selenium 3 中处理自动建议 Web 元素

python - 将 Selenium 与 Scrapy 集成

python - 如何提高 Pandas 中concat的速度

Python Pandas groupby 紧密间隔的事件

php - 为什么我的 if 语句不适用于所有 mysql 结果?

javascript - 无法获取图像的宽度

ruby - 使用 Selenium 清除浏览器缓存