如何使用 C# selenium 自动化 Md2-datepicker?

Posted

技术标签:

【中文标题】如何使用 C# selenium 自动化 Md2-datepicker?【英文标题】:How to automate Md2-datepicker using C# selenium? 【发布时间】:2018-12-08 22:28:49 【问题描述】:

我们在现实生活场景中没有自动日期选择器。

我们通常将日期作为文本注入日期字段。但万一那是不可能的。所以想到自动化应用程序中使用的日期选择器。

由于大多数网络应用程序要么迁移到 Angular 最新版,要么以 Angular 开发,我认为这将帮助每个人帮助自动化使用的日期选择器。尤其是 md2-datepicker。

【问题讨论】:

【参考方案1】:

为日期选择添加一个帮助类。

 public class DatePickerSelection
    
        public const string cellSelector = ".md2-calendar-body-cell > .md2-calendar-body-cell-content";

        public static void SetCalenderDate(IWebDriver driver, string EnteredDate)
        
            string[] dateEntered = EnteredDate.Split("/".ToCharArray()); //to split the dates into day, month and year value
            int month = int.Parse(dateEntered[0]);
            string mon = CultureInfo.CurrentCulture.DateTimeFormat.GetAbbreviatedMonthName(month);
            int day = int.Parse(dateEntered[1]);
            int year = int.Parse(dateEntered[2]);

            int NoOfClicks = DateTime.Now.Year - year; //to select the year
            driver.FindElement(By.CssSelector("div.md2-calendar-header-year")).Click();
            for (int i = 0; i < NoOfClicks; i++)
            
                driver.FindElement(By.CssSelector("div.md2-calendar-next-button")).Click();
            
            IjavascriptExecutor js = (IJavaScriptExecutor)driver;
            js.ExecuteScript("document.body.style.zoom='100%'");
            SetMonthAndDate(driver, mon, day);
        
        public static void SetMonthAndDate(IWebDriver driver, string month, int day)
        
            SelectMonth(driver, month);
            SelectDay(driver, day.ToString());
        

        public static void SelectMonth(IWebDriver driver, string mon)
        
            IList<IWebElement> webElements = driver.FindElements(By.CssSelector(cellSelector));
            IWebElement text = webElements.FirstOrDefault(x => x.Text.ToLower().Equals(mon.ToLower()));
            text.Click();
            Thread.Sleep(Timing.TimeOut);
        

        public static void SelectDay(IWebDriver driver, string day)
        
            IList<IWebElement> webElements = driver.FindElements(By.CssSelector(cellSelector));
            IWebElement text = webElements.FirstOrDefault(x => x.Text.Contains(day));
            text.Click();
            Thread.Sleep(Timing.TimeOut);
        
    

在测试中,调用 DatePickerSelection 类中可用的 SetCalenderDate。

string startDate = DateTime.Today.ToShortDateString();
SetCalenderDate(driver, startDate);

【讨论】:

以上是关于如何使用 C# selenium 自动化 Md2-datepicker?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 C# 中使用 Selenium 驱动程序向上/向下滚动页面?

使用 c#、selenium 和 jquery 实现 IE 自动化 - 从动态表中随机获取

如何使用 selenium C# 识别页面上是不是存在浏览器警告框

[小北De编程手记] : Lesson 06 - Selenium For C# 之 流程控制

如何从浏览器 Selenium C# 中读取 pdf 内容

C#项目中使用 Selenium + PhantomJS 模拟登录博客园