首页 > 解决方案 > 为什么我在源代码中看不到下拉菜单的选项?

问题描述

我正在尝试使用 selenium 在下拉菜单中选择一个选项Select,但我无法从中得到任何东西。我现在的代码是这样的

select = Select(driver.find_element_by_id("cmbTBC"))
select.select_by_value("172")

这给我带来了错误selenium.common.exceptions.NoSuchElementException: Message: Cannot locate option with value: 172

如果我检查该元素,我可以看到一个选项列表,包括一个值为“172”的选项,但转到源代码根本没有显示任何选项。这是源中带有下拉菜单的部分。

<select Id="cmbTBC" class="form-control" data-val="true" data-val-number="The field TBC must be a number." data-val-required="The TBC field is required." id="IdTBC" name="IdTBC" onchange="CreateBC.DescriptionTBC(this.value)">
    <option value=""></option>
</select>

我究竟做错了什么?

标签: python-3.xselenium

解决方案


这些选项可能由 JavaScript 加载,您可以等待它们出现自定义 ExpectedCondition

def wait_for_options(self, select):
    if select.options:
        return True
    return False

select = Select(driver.find_element_by_id("cmbTBC"))
wait = WebDriverWait(driver, 10)
wait.until(lambda x: self.wait_for_options(select))
select.select_by_value("172")

您还应该注意到有 to属性,其中id之一是带有大写字母I和. 您需要小写字母,可能还有另一个没有选项的下拉菜单,这就是驱动程序所在的位置Id="cmbTBC"id="IdTBC"id="cmbTBC"

select = Select(driver.find_element_by_id("IdTBC"))

推荐阅读