使用 Python 在 Selenium 中选择反应选择下拉列表中的项目

问题描述 投票:0回答:4

此处链接示例网站

在该网站中,我正在寻找如何在“单个”下拉框中和“分组”下拉框中选择项目(例如“绿色”)。

我尝试先单击下拉列表,然后尝试找到其中的元素进行单击,但我不能

你有什么想法吗?通过分组下拉菜单,我什至找不到单击它的 xpath

提前致谢

driver = webdriver.Chrome()
driver.get("https://react-select.com/home")
driver.maximize_window()
driver.implicitly_wait(20)
driver.find_element_by_xpath("//div[@class='select__value-container select__value-container--has-value css-1hwfws3']").click()
driver.find_element_by_xpath("//*[@text()='Green']").click()
python selenium webdriver dropdown react-select
4个回答
3
投票

从文本中删除@

driver.find_element_by_xpath("//*[text()='Green']").click()

要单击不可见的选项:

option=driver.find_element_by_xpath("//*[text()='Silver']")
driver.execute_script("arguments[0].scrollIntoView();", option)
option.click()

您必须先滚动到该位置,然后单击


1
投票

要从 Single 下拉框中选择 Green,您需要为 element_to_be_clickable() 引入

WebDriverWait
,并且可以使用以下任一定位器策略

driver.get("https://react-select.com/home")
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "div.basic-single > div.select__control > div.select__value-container"))).click()
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//div[contains(@class, 'select__menu')]/div[contains(@class, 'select__menu-list')]//div[contains(@class, 'select__option') and text()='Green']"))).click()
  • 浏览器快照:


0
投票

我无法自动化react-select下拉列表,原因是一旦你点击它,它就会呈现列表,但我将分享对我来说效果很好的解决方案,我只会给你一个想法如何实现它,因为我使用了Javascript。


0
投票

我分享我的答案是因为我找到的解决方案都不适合我。我想要的是选择选择列表的多个值:

  • 首先,我必须单击反应选择组件才能显示选项列表。
react_select_button = WebDriverWait(driver,10).until(EC.visibility_of_element_located((By.XPATH, '//*[@id="root"]/div/div..../div[1]')))
react_select_button.click()
  • 然后我在输入字段内单击并传递了我想要搜索的第一个关键字选项,然后单击渲染的列表。
driver.find_element(By.XPATH, "//input[@id='react-select-input']").send_keys("my-option-1")
WebDriverWait(driver, 5).until(EC.presence_of_element_located((By.ID, "react-select-listbox"))).click()
  • 此后,由于鼠标位于输入字段上,我再次传递了第二个关键字,单击列表以选择要选择的选项。
driver.find_element(By.XPATH, "//input[@id='react-select-input']").send_keys("my-option-2")
WebDriverWait(driver, 5).until(EC.presence_of_element_located((By.ID, "react-select-listbox"))).click()
  • 最后,我点击了搜索按钮。
button_select = WebDriverWait(driver, 10).until(EC.visibility_of_element_located((By.XPATH, '//*[@id="root"]/div/div/.../button[1]')))
button_select.click()
© www.soinside.com 2019 - 2024. All rights reserved.