我正在尝试使用 Selenium 自动执行一些任务,所以这是我第一次使用它。
我的代码的一部分需要从“下拉”菜单中选择多个值。
我通过这样做访问此菜单:
metrics_element = driver.find_element_by_xpath("//div[@class='metrics']")
metrics_element.click()
然后,为了进行完整性检查,我想查看此菜单中的所有选项,因此我按照文档执行此操作:
all_options = metrics_element.find_elements_by_tag_name('option')
for option in all_options:
print option.get_attribute('value')
这返回了我认为是字典的东西:
{"id": "1", "name": "name_1", "field": "field_1", "service": "service_1" }
{"id": "2", "name": "name_2", "field": "field_2", "service": "service_1" }
{"id": "3", "name": "name_3", "field": "field_3", "service": "service_1" }
当我尝试将它们作为字典访问时,我遇到了一个错误。我将如何选择某些领域。例如,假设我想选择 name in ('name_1', 'name_3')
的位置?更重要的是,一般来说,我将如何从此 metrics_element
选择指标?谢谢!
编辑:这是此菜单的HTML
<div class="select2-container select2-container-multi" id="s2id_metrics" style="width: 400px;">
<ul class="select2-choices">
<li class="select2-search-field">
<input type="text" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false" class="select2-input select2-default" id="s2id_autogen5" style="width: 398px;">
</li>
</ul>
</div>
最佳答案
要获取每个选项的名称
值并选择所需的选项,您可以使用以下代码:
import re
all_options = metrics_element.find_elements_by_tag_name('option')
for option in all_options:
print re.search('(?:(name_\d))',option.get_attribute('value')).group(0) # to get all values
all_options[0].click() # to select first option
更新
如果您需要将一些值发送到输入字段,请使用
driver.find_element_by_xpath("//input[@id='s2id_autogen5']").send_keys('some_value')
如果这不是您想要的,请告诉我
关于python - 访问下拉元素中的字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41859851/