python - 访问下拉元素中的字段

标签 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>

最佳答案

要获取每个选项的名称值并选择所需的选项,您可以使用以下代码:

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/

相关文章:

python - 使用 Python 的 Flask 为 URL 创建 "catch all"

node.js - 我如何在 webdriver.io 中以 32 位模式启动 IE

java - 将 xpath 从 String 转换为 WebElement

python - 如何使用 selenium webdriver 和 python 关闭 chrome 浏览器弹出对话框

python - 调整 wxPython 小部件的大小

python - Python 中的 RE - lastindex 属性

java - 未应用last()

Ubuntu 上的 Selenium 测试镜像

Python:如何在 Selenium 中隐藏输出的 Chrome 消息?

python - 我如何摆脱像 ' 这样出现而不是撇号的字符?