为什么在源代码中看不到下拉菜单的选项?

时间:2019-11-25 14:03:32

标签: python-3.x 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>

我在做什么错了?

1 个答案:

答案 0 :(得分:0)

这些选项可能是由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")

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

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