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>
我究竟做错了什么?
解决方案
这些选项可能由 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"))
推荐阅读
- json - 如何在powershell中将JSON键和值捕获为数组
- java - Jetty 11. 使用 Godaddy 证书的安全连接失败
- html - CSS边框属性为边框添加了几层
- jquery - Jquery:如何在一串文本中查找单独的数字集并向它们添加href标签
- arrays - 在 Fauna db 中过滤嵌套的文档树?
- javascript - 在 JavaScript 中将 Json 对象解析为二维数组
- google-cloud-platform - Terraform 试图覆盖我已经创建的 gcp 资源组,同时尝试创建另一个资源组
- storage - 如何为 ceph 集群运行管理器守护进程?
- c++ - 关于 std::random_shuffle 对向量进行洗牌的说明
- java - 从另一个类的 ArrayList 中删除一个对象