C # Selenium Календарь не работает, и я получаю сообщение об ошибке - PullRequest
0 голосов
/ 20 октября 2018

Мне удалось получить помощь, нажав на первый календарь, и мне нужно было сделать то же самое для следующего календаря.Поэтому мне нужно выбрать 1-й день месяца в первом календаре, а для 2-го календаря мне нужно нажать на последний день следующего месяца.Расписание, которое я создаю, создается каждые два месяца.

Первый выбор календаря выглядит следующим образом, и он работает;

IWebElement FromCalendar = Chromedriver.FindElement(By.Id("ctl00_MainContent_dpStart_B-1")); //
        FromCalendar.Click();

        //Always Click the current 1st day of the month
        new WebDriverWait(Chromedriver, TimeSpan.FromSeconds(2)).Until(ExpectedConditions.ElementToBeClickable(By.XPath("//td[@class='dxeCalendarDay'][.='1']"))).Click();

Второй календарь следующий и не работает, я также создалпеременная, которая включена в xpath, но я получаю ошибку тайм-аута, и даже если я изменяю секунды на 20 или 30 секунд, я все равно получаю ту же ошибку.Если бы я жестко закодировал значение в переменной, оно все равно не сработало бы.

String LastDayofNextMonth = endOfLastDayNextMonth.ToString("dd");

        // 2nd Calendar
        Chromedriver.FindElement(By.Id("ctl00_MainContent_dpEnd_B-1Img")).Click(); ; //

        //Click next month because schedule should be every 2 months

        Chromedriver.FindElement(By.Id("ctl00_MainContent_dpEnd_DDD_C_NMCImg")).Click(); //


        //Always Click the last day of next month - so schedule is for every 2 months

        new WebDriverWait(Chromedriver, TimeSpan.FromSeconds(3)).Until(ExpectedConditions.ElementToBeClickable(By.XPath("//td[@class='dxeCalendarDay'][.='"+LastDayofNextMonth+"']"))).Click();

Календарь открывается и переходит на следующий месяц, но последний день месяца не щелкается, и я получаю следующую ошибку;

OpenQA.Selenium.WebDriverTimeoutException: «Превышено время ожидания через 3 секунды»

Я не уверен, почему первый календарь работает, а второй - нет.

Заранее спасибо.

1 Ответ

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

Я понял.

В календаре было 2 дня 30, поэтому он выбирал 30 октября и должен был быть последним днем ​​следующего месяца, т.е. 30 ноября.

Окончательный код;

new WebDriverWait(Chromedriver, TimeSpan.FromSeconds(5)).Until(ExpectedConditions.ElementToBeClickable(By.XPath("(//td[@class='dxeCalendarDay'][.='"+LastDayofNextMonth+"'])[2]"))).Click();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...