Python 如何从下拉列表中选择选项

Python 如何从下拉列表中选择选项,python,selenium,Python,Selenium,我在使用selenium浏览网站时遇到问题。这是我的代码: from selenium import webdriver driver = webdriver.Firefox() driver.get('https://webtrader.binary.com/v2.2.8/main.html#') resources = driver.find_element_by_id('ui-id-1') resources.click() 但是,我有一个例外: selenium.common.ex

我在使用selenium浏览网站时遇到问题。这是我的代码:

from selenium import webdriver

driver = webdriver.Firefox()
driver.get('https://webtrader.binary.com/v2.2.8/main.html#')

resources = driver.find_element_by_id('ui-id-1')
resources.click()
但是,我有一个例外:

selenium.common.exceptions.ElementNotInteractableException: Message: Element <ul id="ui-id-1" class="ui-menu ui-widget ui-widget-content ui-menu-icons"> could not be scrolled into view

我不明白我哪里出错了。我试图从标有“资源”的下拉菜单中访问“历史数据”。有人能帮我取一下吗。也许我把资源的id搞错了。你也可以看看。

这里发生了很多事情。首先,您的代码缺少等待。如果没有,它将始终失败,因为页面是动态加载的。了解


其次,这里resources=driver.find_element_by_id'ui-id-1'您正在从下拉菜单中查找元素,然后尝试单击它。但下拉菜单未打开。您应该单击它,然后等待选项出现,然后单击“历史数据”。

要单击以打开下拉列表的元素是元素资源的上一个同级元素


我认为您需要等待js加载使用显式等待您可能会说这个问题与前面的其他问题类似,但事实并非如此。我在相关问题上尝试了5种以上的其他解决方案,但都没有成功。@VaibhavVishal您尝试过吗?@JuhilSomaiya请您编写代码并进行测试。我肯定不需要那么多的线路。请
from selenium.webdriver.support import expected_conditions as ec
from selenium.webdriver.support.select import By
from selenium.webdriver.support.ui import WebDriverWait

wait = WebDriverWait(driver, 10)

driver.find_element_by_class_name('resources').click()
historical_data = wait.until(ec.visibility_of_element_located((By.ID, 'ui-id-4')))