2017-12-21 26 views
0

페이지에 여러 개의 datepickers가있는 페이지가 있습니다.웹 요소 문제를 클릭하는 방법

저는 첫 번째 루프를 실행하여 얼마나 많은 datepickers가 있는지 확인합니다.

 List<WebElement> calanders = driver.findElements(By.cssSelector(".c-input-group__addon")); 
     for(int i1=0; i1<calanders.size(); i1++) {  
     System.out.println("how many calanders " +i1); 
     } 

그런 다음 날짜 표시기를 반복하고 필요한 날짜를 클릭하십시오.

계속하려면 선택기를 닫으려면 버튼을 클릭해야합니다. 여기가 문제가됩니다.

calanders.get(1).findElements(By.xpath("//label[contains(@class,'c-option')]")).click;

어떻게 내가 By.xpath("//label[contains(@class,'c-option')]의 두 번째 선두로부터 클릭 수 있습니까 ??

List<WebElement> calanders1 = driver.findElements(By.cssSelector(".c-input-group__addon")); 
    for(int i1=1; i1<calanders1.size(); i1++) {   

    driver.findElements(By.cssSelector(".c-input-group__addon")); 

    calanders1.get(i1).findElement(By.xpath("//label[contains(@class,'c-option')]")).click(); 

    } 
+0

'.' xpath 앞에 - By.xpath (".// label [contains (@ class, 'c-option')]"). 이렇게하면 캘린더 안의 닫기 버튼을 검색하여 닫을 수 있습니다. – Grasshopper

+0

관련 'HTML'('날짜 선택 도구'와 '닫기'버튼의 스냅)가 없으면 우리가 당신을 도울 필요가 무엇인지 추측하기가 어려울 것입니다. – DebanjanB

답변

0
  1. 시도는 많은 요소가 XPath에 의해 페이지에 얼마나 F12를 통해 찾을 수 있습니다. 로케이터에 의해 1보다 많은 요소가 있기 때문에 클릭하지 못할 수도 있습니다.
  2. 요소를 클릭 할 수있을 때까지 웨이터를 추가 할 수 있습니다. 또는 단지 Thread.sleep()을 추가하되 좋은 방법은 아닙니다.

p.s. 예외 로그를 ​​질문에 인쇄하는 것이 더 좋습니다.