我有一个Selenium测试,它在ASP.NET MVC5视图的datetimepicker上选择日期。问题是,当我在Visual Studio中运行测试时,Selenium代码运行得很好。当代码在我自己的机器上运行的TFS生成代理上运行时,生成代理不能选择日期。单击日期后,应突出显示所选日期,以指示该日期已被选中。这在Visual Studio中会发生,但在构建代理上不会发生。
我的Selenium代码如下所示:
_driver.Manage().Timeouts().ImplicitWait =新的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");发布于 2019-01-15 04:31:23
最后我解决了这个问题。导致此问题的原因是所选日期的单击时间太早。在整个页面完全加载之前,点击已经完成。这发生在应用程序部署后第一次命中页面之后。我的解决方案是在点击所选日期后添加一个Thread.Sleep。
https://stackoverflow.com/questions/54141858
复制相似问题