특정 유형의 모든 필터를 보유하는 컨테이너 DIV가 있습니다 (예 : 브랜드, 용량 등 브랜드에 대한 것은 아래와 같습니다.
<div class="filter-inner " data-name="Brand">
해당 컨테이너 아래에서 모든 라벨 태그를 클릭하면 상자를 체크하기 위해 클릭해야합니다. 따라서 그룹화를 필터로 사용하여 원하는 확인란에만 도달하는 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");
처럼 부를 것이다. 그것은 당신의 경우에 더 쉬울 것입니다. 체크 박스 라벨 텍스트를 취하는 함수를 작성하십시오. 8GB 또는 무엇이든간에, 그리고 그것을 기반으로 체크 박스를 선택합니다. – JeffC
나는 매 3 초마다 하나씩 하나씩 모두 선택해야합니다. 목록을 사용하여이 작업을 수행 할 수 없습니다. – Ritu
시나리오를 명확히하고 세부 사항을 제공하십시오. 해당 페이지에는 많은 체크 박스가 있습니다. 어떤 것을 클릭하려고합니까? 하나를 클릭하여 선택한 다음 다시 클릭하여 선택을 취소하고 다음을 클릭 하시겠습니까? 아니면 마지막에 모든 확인란을 선택 하시겠습니까? – JeffC