Python selenium 从文本下拉列表中选择



我有一个网络进程,我正在努力实现自动化。HTML 如下所示:

<td class="v-formlayout-contentcell">
<div class="v-select v-widget v-has-width" id="gwt-uid-46" aria-labelledby="gwt-uid-45" style="width: 225px;">
<select class="v-select-select" size="1" tabindex="0" style="width: 225px;">
<option value="null"></option><option value="1">21/24 Long Term Auction Credit Study</option><option value="2">21/24 Long Term Auction</option></select></div></td>

我总是从下拉列表中知道我的选项是什么。

如果我知道需要选择哪个选项,有没有办法根据选项的文本选择它。在此示例中,我想选择21/24 Long Term Auction Credit Study

我不能使用id = "gwt-uid-46",因为我担心这很容易改变。

编辑: 我在 HTML 中注意到还有另一个类的名称为class="v-select-select".因此,到目前为止发布的答案都没有像它找到该类而不是我感兴趣的类那样起作用。

from selenium.webdriver.support.ui import Select

select = Select(WebDriverWait(driver, 10).until(expected_conditions.visibility_of_element_located((By.Class_name,"v-select-select"))
select.select_by_visible_text("21/24 Long Term Auction Credit Study")
or 
select.select_by_value("1")

要从下拉菜单中选择带有文本的<option>21/24使用硒和 python 进行长期拍卖信用研究,您需要诱导 WebDriverWait 等待element_to_be_clickable(),您可以使用以下定位器策略:

  • CSS_SELECTOR

    select = Select(WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.XPATH, "select.v-select-select"))))
    select.select_by_visible_text("21/24 Long Term Auction Credit Study")
    
  • XPATH

    select = Select(WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.XPATH, "//select[@class='v-select-select']"))))
    select.select_by_visible_text("21/24 Long Term Auction Credit Study")
    
  • 注意:您必须添加以下导入:

    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
    

参考

您可以在以下位置找到一些相关的讨论:

  • 如何在python中使用Selenium从站点下载多个文件,选择下拉列表的每个选项

最新更新