OpenQA.Selenium.ElementNotInteractableException: невозможно нажать на элемент - PullRequest
0 голосов
/ 31 мая 2018
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;
         }

Отредактировал код и попытался запустить скрипт.Логика, написанная для SELECTPCRFROM, работает нормально, но та же логика не работает для SELECTPCRTO.перепробовал многие другие решения, но SELECTPCRTO все еще не работает, как ожидалось. Пожалуйста, помогите мне в этом.В исполняемом коде отображается сообщение об ошибке в заголовке

Screenshot of the Calendar

1 Ответ

0 голосов
/ 31 мая 2018

Большинство сборщиков дат идентифицируется с помощью xpath, но если вы попытаетесь выполнить операцию над ними, они выдадут вам ошибку.Вместо этого попробуйте пойти по пути javascript.

Java -

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

Похоже, вы можете использовать его в C #. Ответ здесь - ссылка

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...