我有一个硒测试,该测试在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");
答案 0 :(得分:0)
最后,我解决了这个问题。造成此问题的原因是,单击所选日期的时间过早。在整个页面完全加载之前,已经完成了单击。这是在部署应用程序后第一次点击页面后发生的。 对我来说,解决方案是在单击所选日期后添加Thread.Sleep。