Обработка каландра в селене? - PullRequest
0 голосов
/ 04 октября 2018

Я закодировал обработку календаря для выбора года, месяца и дня ... но я должен выполнить следующие действия: если год меньше текущего года, он должен перейти к предыдущему году, а если год больше чемв текущем году он должен перейти к будущим годам ... я сделал для будущей даты .. кто-нибудь может подсказать мне, как обрабатывать год для перехода назад, если я передам значение года меньше текущего года?

импорт java.util.Date;import java.util.List;

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;

public class DateCalender2 {

    public static WebDriver driver = null;
    public static void main(String[] args) throws InterruptedException {
    System.setProperty("webdriver.chrome.driver","D:\\work\\work_files\\eclipse_selenium_files\\chromedriver.exe");

        WebDriver driver = new ChromeDriver();

        driver.get("http://jqueryui.com/datepicker/");

        driver.manage().window().maximize();

        driver.switchTo().frame(0);

        driver.findElement(By.xpath("//input[@id='datepicker']")).click();

//      String currentYear = driver.findElement(By.xpath("//div[@class='ui-datepicker-title']/span[@class='ui-datepicker-year']")).getText();

        Thread.sleep(2000);
//      System.out.println(currentYear);
        chooseDate("2019", "May", "13", driver);

    }

    public static void chooseDate(String year,String MonthName,String Day, WebDriver driver) throws InterruptedException {

        String currentMonth = driver.findElement(By.xpath("//div[@class='ui-datepicker-title']/span[@class='ui-datepicker-month']")).getText();
        String currentYear = driver.findElement(By.xpath("//div[@class='ui-datepicker-title']/span[@class='ui-datepicker-year']")).getText();
        System.out.println(currentYear);
        //Selecting year

//      int YearInt = Integer.parseInt(currentYear);
//      System.out.println(YearInt);
        if(!currentYear.equalsIgnoreCase(year)) {



            do {
            driver.findElement(By.xpath("//div[@id='ui-datepicker-div']/div/a[2]/span")).click();
            }
            while(!driver.findElement(By.xpath("//div[@class='ui-datepicker-title']/span[@class='ui-datepicker-year']")).getText().equals(year));
        }


        //Selecting month
        if(!currentMonth.equalsIgnoreCase(MonthName)) {
            do {
                driver.findElement(By.xpath("//div[@id='ui-datepicker-div']/div/a[2]/span")).click();
                Thread.sleep(2000);
            }
            while(!driver.findElement(By.xpath("//div[@class='ui-datepicker-title']/span[@class='ui-datepicker-month']")).getText().equals(MonthName));
        }

        //Selecting Date
            WebElement dateWidget = driver.findElement(By.id("ui-datepicker-div"));
          List rows=dateWidget.findElements(By.tagName("tr"));
          List<WebElement> columns=dateWidget.findElements(By.tagName("td"));

          for (WebElement cell: columns){
           //Select 13th Date 
           if (cell.getText().equals(Day)){
           cell.findElement(By.linkText(Day)).click();
           break;
           }
          } 
    }

}

1 Ответ

0 голосов
/ 04 октября 2018

Вы можете попробовать вот так, используя parseInt метод Integer class

Integer yearGiven="1997"
String year =driver.findElement(By.cssSelector(".ui-datepicker-year"))).getText();

String intYear =Integer.parseInt(year); // get Current year

if(intYear>yearGiven){
// Click left arrow
}

else if (intYear<yearGiven){
// Click right arrow
}
 /* You can also convert Integer to String */ 
Integer x=1955;
String strYear = String.valueOf(x);
// compare code goes here

Примечание. В показанном вами примере нет ссылки на год, мы можем переключать только месяцы

...