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

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

我正在尝试使用硒的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.x selenium
1个回答
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"))
© www.soinside.com 2019 - 2024. All rights reserved.