使用Selenium Python,前端应用程序 - react.js从下拉列表中选择

时间:2017-01-13 04:12:21

标签: python selenium reactjs

我想使用selenium python从下拉列表中选择一个项目。该项目使用react.jsdropdown html出现在div中。

code inspect for dropdown

由于这是在div下,而不是选择,当我尝试选择特定值时,我收到了一条错误消息。

错误讯息:

  

selenium.common.exceptions.UnexpectedTagNameException:消息:选择   仅适用于元素,而不适用于div

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

您无法使用Select class来操作使用selectoption元素未实现的下拉菜单。

你必须“手动”处理这种下拉菜单 - 一般来说 - 点击它以打开它,找到所需的下拉项目/选项并单击它。例如,通过简明的HTML片段判断,打开下拉菜单,您可以尝试:

# open up the dropdown
dropdown = driver.find_element_by_css_selector(".Select-control")
# or dropdown = driver.find_element_by_css_selector(".Select-control .Select-input")
dropdown.click()

# TODO: select option

有时,只需关注下拉列表并输入所需的项目/选项文本就会自动选择它 - 如果是这种情况,您可以尝试:

from selenium.webdriver.common.action_chains import ActionChains

actions = ActionChains(driver)
actions.move_to_element(dropdown).send_keys("Desired option text").perform()

并且,如果有任何动画或时间延迟(例如,从服务器检索选项),您可能需要添加Explicit Waits来处理可能的时间问题。

这些都是一般提示,我在假设下操作,我无法检查上述内容是否适用于您的用例。