Build Agent无法在DateTimePicker中选择日期

时间:2019-01-11 07:09:51

标签: selenium tfs selenium-chromedriver

我有一个硒测试,该测试在ASP.NET MVC5视图的datetimepicker上选择一个日期。问题是,当我在Visual Studio中运行测试时,Selenium代码可以完美运行。当代码在我自己的计算机上运行的TFS Build Agent上运行时,Build Agent无法选择日期。单击日期后,所选日期应突出显示,以指示已选择日期。这是在Visual Studio中发生的,但没有在构建代理上发生。

我的Selenium代码如下:

_driver.Manage()。Timeouts()。ImplicitWait = new TimeSpan(0,0,10);

            _driver.Navigate().GoToUrl(<someurl>);

            _driver.Manage().Timeouts().ImplicitWait = TimeSpan.FromSeconds(20);

            //Auto 3
            //IWebElement query = _driver.FindElement(By.Id("btn_car_1024"));
            var query = _driver.FindElementsByClassName("btn_car").FirstOrDefault();
            query.Click();

            _driver.Manage().Timeouts().ImplicitWait = TimeSpan.FromSeconds(20);

            //Select a date in the calendar
            //_driver.Manage().Timeouts().ImplicitWait = TimeSpan.FromSeconds(20);

            _driver.FindElement(By.ClassName("datepicker")).Click();

            _driver.Manage().Timeouts().ImplicitWait = TimeSpan.FromSeconds(20);

            var elements = _driver.FindElements(By.ClassName("day"));

            var dateLinkText = DateTime.Now.AddDays(1).Day.ToString();

            var selectedElements = elements.Where(p => p.Text == dateLinkText);
            _driver.Manage().Timeouts().ImplicitWait = TimeSpan.FromSeconds(20);

            if (selectedElements == null)
            {
                throw new Exception("SelectedElements null");
            }
            if (selectedElements.Count() == 0)
            {
                throw new Exception("Length null");
            }
            var selectedElement = selectedElements.FirstOrDefault();

            selectedElement.Click();
            _driver.Manage().Timeouts().ImplicitWait = TimeSpan.FromSeconds(20);

            //Select time
            var timeDropDownList = _driver.FindElementById("Time");
            timeDropDownList.Click();

            var selectElement = new OpenQA.Selenium.Support.UI.SelectElement(timeDropDownList);
            selectElement.SelectByText("10:00-11:00");

1 个答案:

答案 0 :(得分:0)

最后,我解决了这个问题。造成此问题的原因是,单击所选日期的时间过早。在整个页面完全加载之前,已经完成了单击。这是在部署应用程序后第一次点击页面后发生的。 对我来说,解决方案是在单击所选日期后添加Thread.Sleep。