0
public PriceChangeRequestStatus SelectPcrFrom(String[] fromdate)
        {
            wrapper.Click(imgPcrFrom);


            String year, day, month;
            day = fromdate[0];
            month = fromdate[1];
            year = fromdate[2];

            //for (int index = 0; index <= 1; index++)

                wrapper.Click(lnkPcrFrom);
                wrapper.Click(lnkPcrFrom);
            Thread.Sleep(4000);
            driver.FindElement(By.XPath("//div[contains(text(),'" + year + "')]")).Click();
                Thread.Sleep(4000);
                driver.FindElement(By.XPath("//div[contains(text(),'" + findMonth(month).Substring(0, 3) + "')]")).Click();
                Thread.Sleep(2000);

                driver.FindElement(By.XPath("//div[contains(@title,'" + findMonth(month) + " " + day + ", " + year + "')]")).Click();
                Thread.Sleep(2000);

            return this;
        }

        public PriceChangeRequestStatus SelectPcrTo(String[] todate)
        {
            wrapper.Click(imgPcrTo);
            wrapper.Click(lnkPcrTo);
            wrapper.Click(lnkPcrTo);

            String year, day, month;
            day = todate[0];
            month = todate[1];
            year = todate[2];
            Thread.Sleep(4000);
            // By Sunayana
            //IJavaScriptExecutor js = (IJavaScriptExecutor)driver;
            //js.ExecuteScript("document.getElementsByClassName('ajax__calendar_year')");

            // End


            ////   IReadOnlyList<IWebElement> yearClick =  wrapper.GetElements("xpath:=.//div[@class='ajax__calendar_year']");
            //IList<IWebElement> yearClick = driver.FindElements(By.XPath(".//div[@class='ajax__calendar_year']"));
            //Console.WriteLine(yearClick.Count);
            //for (int index = 1; index-1 <= yearClick.Count; index++)
            //{
            //    int i=0;
            //    Console.WriteLine(index);
            //    i=index;

            //    if (yearClick[i].GetAttribute("innerHTML").Equals(year))
            //    {
            //        yearClick[i].Click();
            //        Console.WriteLine("I am here");
            //    }
            //    else {
            //        Console.WriteLine("Sorry");
            //    }
            //}
            Thread.Sleep(4000);

            //var wait = new WebDriverWait(driver, TimeSpan.FromSeconds(10));

            //try
            //{
            //    wait.Until(ExpectedConditions.ElementToBeClickable(By.XPath("//div[contains(text(),'" + year + "')]"))).Click();
            //}
            //catch (WebDriverTimeoutException)
            //{
            //    Console.WriteLine("Logout button was not visible!");
            //}

            IWebElement clickyear = driver.FindElement(By.XPath("//div[contains(text(),'" +year+ "')]"));
            clickyear.Click();
            //Actions action = new Actions(driver);
            //action.MoveToElement(clickyear).Click().Build().Perform();

            Thread.Sleep(4000);
            driver.FindElement(By.XPath("//div[contains(text(),'" + findMonth(month).Substring(0, 3) + "')]")).Click();
            Thread.Sleep(2000);

            driver.FindElement(By.XPath("//div[contains(@title,'" + findMonth(month) + " " + day + ", " + year + "')]")).Click();
            Thread.Sleep(2000);
            return this;
        }

        public String findMonth(String month)
        {
            String CorrectMonth = "";

            switch (month) {
                case "01":
                    CorrectMonth = "January";
                    break;
                case "02":
                    CorrectMonth = "February";
                    break;
                case "03":
                    CorrectMonth = "March";
                    break;
                case "04":
                    CorrectMonth = "April";
                    break;
                case "05":
                    CorrectMonth = "May";
                    break;
                case "06":
                    CorrectMonth = "June";
                    break;
                case "07":
                    CorrectMonth = "July";
                    break;
                case "08":
                    CorrectMonth = "August";
                    break;
                case "09":
                    CorrectMonth = "September";
                    break;
                case "10":
                    CorrectMonth = "October";
                    break;
                case "11":
                    CorrectMonth = "November";
                    break;
                case "12":
                    CorrectMonth = "December";
                    break;
            }

            return CorrectMonth;
         }

Edited the code and tried running the script. The logic written for SELECTPCRFROM is working fine but the same logic is not working for SELECTPCRTO. tried many others solutions but still SELECTPCRTO is nor working as expected Please help me on this. The executed code is displaying error message provided in the title

Screenshot of the Calendar

Hargovind
  • 73
  • 11

1 Answers1

0

Most of the datepickers gets identified by xpath but when you try perform an operation on them then they would give you an error. Instead try going the javascript way.

Java -

document.evaluate(PATH, document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue;

Similary you can use it in C# Refer the answer here - link