如何选择selenium中ONE-BY-ONE复选框列表中的复选框?

时间:2017-04-20 18:03:21

标签: selenium xpath checkbox selenium-webdriver webdriver

我需要在每3秒后逐个选择所有复选框。我尝试了几个带有list的xpath,但没有一个有效

divs

尝试过xpaths:

  1. //div/div[@class='filters-list sdCheckbox ']
  2. 使用输入和类型。但它们都没有奏效。你能帮帮我吗?

    参考网站:https://www.snapdeal.com/products/storage-devices?sort=plrty - >左上角的容量

  3. By.xpath("//a[@class='filter-name']")这个列出了页面的所有过滤器。

2 个答案:

答案 0 :(得分:0)

xPath "//div[@data-name='Capacity_s']/div[@class='filters-list sdCheckbox ']/input"将获取您需要检查的所有输入元素的列表。

答案 1 :(得分:0)

有一个容器DIV可容纳某种类型的所有过滤器,例如:品牌,产能等品牌,品牌如下所示。

<div class="filter-inner " data-name="Brand">

在该容器下,所有LABEL标签都是您需要单击以选中复选框的标签。因此,我们可以使用分组作为过滤器来制作一个CSS选择器,以便只访问我们想要的复选框。

"div[data-name='Brand'] label"

由于这是我认为你会重用的东西,我会把它写成一个函数。

public static void CheckFilters(String filterGroup)
{
    WebDriverWait wait = new WebDriverWait(driver, 10);
    List<WebElement> filters = driver.findElements(By.cssSelector("div[data-name='" + filterGroup + "'] label"));
    // System.out.println(filters.size()); // for debugging
    for (int i = 0; i < filters.size(); i++)
    {
        filters.get(i).click();

        // wait for the two overlays to disappear
        wait.until(ExpectedConditions.invisibilityOfElementLocated(By.cssSelector("div.searcharea-overlay")));
        wait.until(ExpectedConditions.presenceOfElementLocated(By.cssSelector("div.filterLoader.hidden")));

        // reload the element list after the refresh so you don't get StaleElementExceptions
        filters = driver.findElements(By.cssSelector("div[data-name='" + filterGroup + "'] label"));
    }
}

你会称之为

driver.get("https://www.snapdeal.com/products/storage-devices?sort=plrty");
CheckFilters("Brand");