使用 python selenium 从下拉菜单中选择一个始终更改值和文本的选项

分享于2022年07月17日 dropdown python selenium 问答
【问题标题】:使用 python selenium 从下拉菜单中选择一个始终更改值和文本的选项(Using python selenium to choose an option from a dropdown menu with always changing values and text)
【发布时间】:2022-01-27 23:29:50
【问题描述】:

我想从下拉菜单中选择一个选项,但选项的值总是在变化。

当我使用这段代码时它起作用了:

driver.find_element_by_xpath("//option[text()='8:30pm Thu Dec 30th 2021']").click()

但是我在更改文本时遇到了同样的问题。

我尝试通过对我之前问题的回答来解决它(见附图),但是当我运行代码时,它无法找到值,尽管它正是给出的值。

这是我使用的代码行:

driver.find_element_by_xpath(f"//option[value='{object_name}']").click()

这就是我遇到的问题:

selenium.common.exceptions.NoSuchElementException: 消息: 没有这样的元素: 无法找到元素: {"method":"xpath","selector":"//option[value='2021-12-30 18: 30:00']"}(会话信息:chrome=96.0.4664.110)

code not working

提前致谢。

*添加下拉菜单的HTML:

HTML


【解决方案1】:

在处理下拉菜单时尝试使用 Select()。以下是如何选择相关下拉值的示例:

object_time = datetime.today().replace(hour=6, minute=30, second=0) + timedelta(days=1)
object_name = object_time.strftime("%Y-%m-%d %H:%M:%S")

driver = webdriver.Firefox()
driver.get("your_url")

WebDriverWait(driver, 5).until(
    EC.presence_of_element_located((By.ID, "bookingend_24750452"))
)

dropdown = Select(driver.find_element(By.ID, "bookingend_24750452"))
dropdown.select_by_value(object_name)

  • 嗨,Marco,感谢您这么快回答。我之前试过这个,但它说: Select only works on <select> elements, not on <div>
  • 分享您要解析的问题中的 HTML 内容。
  • 我已经添加了。
  • 正如错误消息所示,您必须选择一个选择 HTML 元素,而不是 div。我更改了代码以通过其 id 选择选择元素。根据您的需求进行更改。
  • 谢谢,但我还有一个问题是ID总是改变......