访问下拉元素中的字段

时间:2017-01-25 19:17:55

标签: python selenium selenium-chromedriver

我正在尝试使用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>

1 个答案:

答案 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')

如果这不是您想要的,请告诉我