calendar의 element들은 대부분 같은 클래스를 가지고 있습니다. 때문에 특정 element를 파악하기란 쉽지는 않습니다...
가장 접근하기 쉬운 방법은,
거기서 equal()
을 사용하여 얻고자하는 날짜를 가진 요소를 선택하는 것입니다.
List<WebElement> elements = driver.findElements(By.className(“day”));
for (WebElement element : elements) {
if(element.getText().equals("31")) {
element.click();
break;
}
}
확인하고자 하는 month의 텍스트 정보를 selenium에 알려주고, 해당 텍스트 정보가 나올때까지 캘린더를 클릭하는 그러한 방식으로 접근합니다.
// June 24, 2020 select month and date
WebElement month = driver.findElement(By.xpath(“/html/body/div[4]/div[1]/table/thead/tr[1]/th[2]"));
while(!month.getText().contains("June")) {
Thread.sleep(1000);
driver.findElement(By.xpath("/html/body/div[4]/div[1]/table/thead/tr[1]/th[3]")).click();
}
List<WebElement> elements = driver.findElements(By.className("day"));
for (WebElement element : elements) {
if(element.getText().equals("24")) {
element.click();
break;
}
}
위 코드 첫 번째 while
에서, June 문자열을 찾지못하면 다음 달을 선택하도록 되어있음.
원하는 month를 찾게된다면, 그 이후 다시 날짜를 찾기 위해 반복문을 실행하여 계속해서 클릭해주는, 어떻게보면 단순한 방법이라 할 수 있겠습니다.
예를 들어서 특정 날짜 이전의 데이터를 조회하고 싶다! 라고 할 때는 기간의 계산등이 필요할 것 입니다.
날짜 계산방법은 Java의 Date
class를 이용하는 건데,
아래의 링크 글에 설명이 잘 되어있기에 링크로 대신 남깁니다.