【问题标题】:In Selenium Webdriver how to handle this kind of multi select dropdown which contains checkbox在 Selenium Webdriver 如何处理这种包含复选框的多选下拉列表
【发布时间】:2014-06-06 07:44:16
【问题描述】:

我有一个下拉菜单,如下图所示

我需要通过单击名称对应的复选框来处理多选。 我正在使用数据驱动的框架。我正在从 excel 中获取数据。 现在我已经编写了代码来单击下拉菜单中的箭头,然后单击相应的复选框。我需要一个更好的解决方案来处理这样的多重选择。

【问题讨论】:

标签: java javascript jquery selenium selenium-webdriver


【解决方案1】:

1) 点击下拉菜单上的箭头,打开下拉列表。

2) 将整个下拉列表放入 Web 元素中。

3) 在上述 WebElement 下创建一个 WebElement 列表,其中标签名称等于“tr”/“li”(取决于您的 html 代码)。现在此列表包含下拉列表的所有多选条目。

4) 获取上述WebElement列表中每个WebElement的文本。

5) 从 Excel 中读取数据。

6) 如果点 (4) 和点 (5) 的数据相等,请使用 XPATH 单击相应的复选框。

如果您需要进一步解释,请发布下拉列表的来源。 要么 提供任何具有相同类型下拉菜单的网址。

【讨论】:

    【解决方案2】:

    做了一些研究后,我假设这个多选下拉菜单是这个 jQuery 插件提供的:

    http://www.jquerybyexample.net/2013/05/how-to-make-multiple-select-dropdown-list-jquery.html

    您可以在此处找到可以检查元素的示例:

    http://wenzhixin.net.cn/p/multiple-select/

    每个复选框都可以通过这样的 xpath 找到:

    //label[contains(text(), 'Name of Option goes Here')]//input
    

    打开下拉列表后,您可以在代码中使用 for 循环并通过 xpath 选择每个元素:

    public void selectOptions(String... options) {
        //code to open dropdown goes here
        for(String option : options) {
            driver.findElement(By.xpath("//label[contains(text(), '" + option + "')]//input")).click();
        }
    }
    

    (注意:您可能还希望将 WebDriver 作为该方法的参数包含在内,并使该方法成为静态方法,具体取决于您的类的设置方式。)

    【讨论】:

    • 另外,如果您处理的 html 代码与我发现的 jQuery 插件示例有很大不同,请告诉我,以便我更改答案。
    猜你喜欢
    • 2014-05-29
    • 2023-04-11
    • 1970-01-01
    • 2017-01-31
    • 2014-12-29
    • 2018-08-28
    • 1970-01-01
    • 2021-01-08
    • 1970-01-01
    相关资源
    最近更新 更多