我正在尝试使用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>
答案 0 :(得分:1)
要获得每个选项的name
值并选择所需选项,您可以使用以下代码:
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')
如果这不是您想要的,请告诉我