无法从 Selenium 和 Python 的下拉菜单中选择
Posted
技术标签:
【中文标题】无法从 Selenium 和 Python 的下拉菜单中选择【英文标题】:Can't select from a dropdown menu with Selenium and Python 【发布时间】:2020-12-11 04:20:06 【问题描述】:我真的很难从我要抓取的网站上的下拉菜单中选择一个项目。 html 的代码如下所示:
<select id="averagesMP" name="MP" onchange="reQuery(this);" style="width: 150px">
<option value="" selected="selected"></option>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
</select>
我已经尝试了所有我能想到的并在 *** 上找到的方法!我注意到这似乎可以选择实际的下拉框:
select_mp = Select(driver.find_element_by_xpath("//select[@name='MP']"))
但我只假设它有效,因为代码运行并且没有给出任何错误。但是,我仍然无法从下拉菜单中选择任何内容。我试过了:
find_element_by_xpath/name/id/tag/value/text select_mp.select_by_value('2') select_mp.select_by_visible_text('2') select_mp.select_by_index(2) driver.find_element_by_xpath("//select[@name='MP']/option[@value='4']").click() driver.find_element_by_xpath("//option[@value='4']").click() driver.find_element_by_id('averagesMP').click()有人有什么建议吗?我知道这个问题似乎在这里被问了很多,但我已经尝试了我在帖子中看到的所有内容,但它不起作用!它看起来不是一个很复杂的下拉菜单,只是非常难以捉摸。
一些有用的信息:
我正在使用 Safari 和 SafariDriver
我不断收到以下错误消息:
raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.WebDriverException: Message:
【问题讨论】:
检查下拉菜单是否在 iframe 中?如果没有,那么您可能必须尝试 javascriptexecutor。 它在哪个网站上>? 该网站是 skedula.com。它是一个教师评分网站。 【参考方案1】:要使用Selenium 选择文本为2 的<option>
,您需要为element_to_be_clickable()
诱导WebDriverWait,您可以使用以下Locator Strategies 之一:
使用CSS_SELECTOR
和select_by_visible_text()
:
select = Select(WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "select#averagesMP[@name='MP']"))))
select.select_by_visible_text('2')
在一行中使用XPATH
和select_by_value()
:
Select(WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//select[@id='averagesMP' and @name='MP']")))).select_by_value('2')
注意:您必须添加以下导入:
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.ui import Select
【讨论】:
感谢您回复我!看起来使用 XPATH 正在尝试访问它,但现在我收到以下错误:消息:元素以上是关于无法从 Selenium 和 Python 的下拉菜单中选择的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 Selenium Webdriver 和 Python 从这个非选择下拉菜单中选择这个元素
selenium webdriver从安装到使用(python语言),显示等待和隐性等待用法,切换窗口或者frame,弹框处理,下拉菜单处理,模拟鼠标键盘操作等
在 python 中使用 selenium 从下拉菜单中选择多个选项
如何使用 Selenium 和 Python 选择具有 unselectable="on" 属性的剑道下拉元素