在 Selenium Webdriver 如何处理这种包含复选框的多选下拉列表

Posted

技术标签:

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

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

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

【问题讨论】:

告诉我们您的尝试(使用一些相关代码)。此外,页面的来源比屏幕截图更有帮助。 (但我也会保留屏幕截图)。 嗨...我有一些示例..selenium.polteq.com/en/…abodeqa.com/2013/02/28/how-to-handle-drop-down-in-webdriver/…希望你能得到解决方案... 您至少应该包含点击下拉菜单后 html 的外观。 【参考方案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 插件示例有很大不同,请告诉我,以便我更改答案。

以上是关于在 Selenium Webdriver 如何处理这种包含复选框的多选下拉列表的主要内容,如果未能解决你的问题,请参考以下文章

Python Selenium - 如何处理在WebDriverWait完成之后才显示的警报?

WebDriver中如何处理Iframe 及 嵌套Iframe

如何处理 Selenium 中的打印对话框?

Selenium 如何处理多层嵌套 iframe

selenium如何处理H5视频

python3 selenium 如何处理异常情况