C#Selenium日历单击不起作用,并且出现错误

时间:2018-10-19 21:20:11

标签: c# selenium calendar

我能够通过单击第一个日历获得帮助,并且需要为下一个日历做同样的事情。因此,我需要在第二个日历的第一个日历nad上选择一个月的第一天,我需要在下个月的最后一天单击。我创建的时间表是每两个月。

第一个日历选择如下,并且有效;

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 :(得分:0)

我知道了。

日历有2天30,因此它选择的是10月的30日,应该是下个月的最后一天,即11月30日。

最终代码;

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