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