Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# C Selenium日历单击不起作用,我得到一个错误_C#_Selenium_Calendar - Fatal编程技术网

C# C Selenium日历单击不起作用,我得到一个错误

C# C Selenium日历单击不起作用,我得到一个错误,c#,selenium,calendar,C#,Selenium,Calendar,我可以通过点击第一个日历得到帮助,并且需要在下一个日历上做同样的事情。因此,我需要在第一个日历上选择周一的第一天,并在下个月的最后一天单击第二个日历。我创建的时间表是每两个月一次 第一个日历选择如下所示,这很有效 IWebElement FromCalendar = Chromedriver.FindElement(By.Id("ctl00_MainContent_dpStart_B-1")); // FromCalendar.Click(); //Always

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

第一个日历选择如下所示,这很有效

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秒后超时”

我不知道为什么第一个日历有效,第二个日历无效

提前谢谢你。

我想好了

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

最终代码

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

如果我们能看到日历,那就容易多了。你不认为你可以发布一个链接到这个页面吗?你至少需要发布相关的HTML。我正在尝试截图。该网站已登录,并且能够使用selenium自动登录。该网站是在ASPX中完成的,我看不到它背后的日历html编码。在网站上,我正在尝试获取从一个日历(例如2018年10月1日和2018年11月30日)到第二个日历的日程安排。一旦自动单击数字30,页面将刷新,并且能够看到这些日期之间的日程安排。