zoukankan      html  css  js  c++  java
  • webdriver 日期控件的处理

    http://www.cnblogs.com/liu-ke/p/4200736.html

    http://blog.csdn.net/wanglha/article/details/44620627

    http://www.yunjuu.com/info/271596.html

    http://www.cnblogs.com/tobecrazy/p/4206742.html

    http://jarvi.iteye.com/blog/1477837

    http://www.cnblogs.com/devtesters/category/657772.html

    在构建自动化套件的过程中,日期操作是一件很重要也很频繁的事情。有的日期控件的div层级结构复杂,同一个类型的日期控件在多个子系统中的表现形式也大相径庭。多数工程师为了避免重复的工作,会封装抽象一个方法或公共的库,还有部分会封装成单独的日期类库。

    控件

    下面是去啊的日期控件

     

    下面是相关的HTML

    当然,有的日期控件元素的id为对应的日期。

    代码逻辑

    针对这种双日期的格式,我们如何在代码中进行处理输入?

    1.      输入目标日期。

    2.      判断目标日期与当前日期的差值

    -         目标日期的年小于当前日期的年

    l                 小于的情况同大于(如下)

    -         目标日期的年等于当前日期的年

    l                 月份相差除以2,计算步长(即向后翻页的次数)

    -         目标日期的年大于当前日期的年

    l                 计算当年剩余月份数量

    l                 计算从下一年开始到目标日期的月份

    l                 月份相加计算出总额并除以2,得出向后翻页的次数。

    3.      循环点击翻页。

    4.      找到相应的html标签,点击即可。

    最终版的代码

    复制代码
            internal static void InternalSelectDeliveryDate(IWebDriver driver, DateTime date)
            {
                DateTime expDate = ConvertToComparableDate(date);
                DateTime curDate = ConvertToComparableDate(DateTime.Now);
    
                int clicks = ((expDate.Year - curDate.Year) * 12 + (expDate.Month - curDate.Month)) / 2;
                Func<By, IWebElement> exp = (condition) => { return InternalFindElement(driver, condition, TimeSpan.FromSeconds(1)); };
                By by = By.ClassName("month_next");
    
                // We currently initialize the wrapDiv, previous, next element every time.
                // To avoid the invalid state exception.
                if (clicks < 0)
                {
                    clicks = (-1) * clicks;
                    by = By.ClassName("month_prev");
                }
    
                for (int i = 0; i < clicks; i++)
                {
                    IWebElement navButton = exp(by);
                    navButton.Click();
                }
    
                IWebElement targetLinkElem = InternalFindElement(driver, By.Id(expDate.ToString("yyyy-MM-dd")), TimeSpan.FromSeconds(1));
                targetLinkElem.Click();
            }
    复制代码
  • 相关阅读:
    P2073 送花(Treap维护双权值)
    P2041 [NOI2005]维护数列(Splay树支持插入区间、删除区间、修改区间、翻转区间、区间求和、区间带修改最大子列和的代码模板)
    P1801 黑匣子(Treap树)
    P3377 【模板】左偏树(可并堆)
    P1553 可怜的狗狗(可持久化线段树)
    P1503 鬼子进村(Treap树)
    Adobe CC 2017 全系列官方中文版32/64位
    Serverless简介
    小程序开发框架MPVue和uni-app
    ORM对象关系映射
  • 原文地址:https://www.cnblogs.com/shengs/p/5907099.html
Copyright © 2011-2022 走看看