我正在尝试使用硒的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>
我在做什么错?
这些选项可能是由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
属性,其中之一是大写的I
,Id="cmbTBC"
和id="IdTBC"
。您需要使用小写字母,可能没有id="cmbTBC"
选项的情况下出现另一个下拉菜单,这是驱动程序所在的位置
select = Select(driver.find_element_by_id("IdTBC"))