Агент сборки не может выбрать дату в DateTimePicker - PullRequest
0 голосов
/ 11 января 2019

У меня есть тест Selenium, который выбирает дату в указателе даты и времени представления ASP.NET MVC5. Проблема в том, что код Selenium отлично работает, когда я запускаю тест в Visual Studio. Когда код выполняется на агенте сборки TFS, работающем на моей собственной машине, агент сборки не может выбрать дату. После нажатия на дату выбранная дата должна быть выделена как указание на то, что дата выбрана. Это происходит в 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 голосов
/ 14 января 2019

Наконец-то я решил эту проблему. Эта проблема была вызвана тем, что щелчок по выбранной дате стал слишком ранним. Клик был сделан еще до того, как вся страница была полностью загружена. Это произошло после первого попадания на страницу после развертывания приложения. Решением для меня было добавить Thread.Sleep после нажатия на выбранную дату.

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