2017-04-20 1 views
-1

매 3 초마다 여기에서 모든 체크 박스를 하나씩 선택해야합니다. 나는 그들 중 누구도셀레늄의 체크 박스 목록에서 체크 박스를 선택하는 방법은 무엇입니까?

divs

시도 XPath의 근무하지 않은, 목록 XPath의 몇을 시도 :

  1. //div/div[@class='filters-list sdCheckbox ']
  2. 입력 및 유형을 사용. 그러나 그들 중 누구도 일하지 않았습니다. 나 좀 도와 줄 수있어?

    참조 웹 사이트 : https://www.snapdeal.com/products/storage-devices?sort=plrty - 왼쪽 모서리

  3. By.xpath("//a[@class='filter-name']") 페이지의 모든 필터를 나열된 하나에서> 용량.

+0

처럼 부를 것이다. 그것은 당신의 경우에 더 쉬울 것입니다. 체크 박스 라벨 텍스트를 취하는 함수를 작성하십시오. 8GB 또는 무엇이든간에, 그리고 그것을 기반으로 체크 박스를 선택합니다. – JeffC

+0

나는 매 3 초마다 하나씩 하나씩 모두 선택해야합니다. 목록을 사용하여이 작업을 수행 할 수 없습니다. – Ritu

+0

시나리오를 명확히하고 세부 사항을 제공하십시오. 해당 페이지에는 많은 체크 박스가 있습니다. 어떤 것을 클릭하려고합니까? 하나를 클릭하여 선택한 다음 다시 클릭하여 선택을 취소하고 다음을 클릭 하시겠습니까? 아니면 마지막에 모든 확인란을 선택 하시겠습니까? – JeffC

답변

0

xPath 은 확인해야하는 모든 입력 요소 목록을 가져옵니다.

0

특정 유형의 모든 필터를 보유하는 컨테이너 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"); 
+0

큰 도움이되었습니다. 한 번 감사드립니다. – Ritu