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();
}

webdriver 日期控件的处理的更多相关文章

  1. Webdriver控制翻页控件,并实现向前向后翻页功能,附上代码,仅供参考,其他类似日期控件的功能可以自己封装

    新增输入与选择页面的html源码: <div style="margin-top:-60px;" class="modal-content" id=&qu ...

  2. webdriver高级应用- 操作日期控件

    1. 通过点击的方式操作日期控件 #encoding=utf-8 from selenium import webdriver import unittest, time, traceback fro ...

  3. selenium webdriver自动化对日期控件的处理

    用JS去掉日期输入框的readOnly属性. 代码如下: ----------------------------------------------------------------------- ...

  4. python selenium 处理时间日期控件(十六)

    测试过程中经常遇到时间控件,需要我们来选择日期,一般处理时间控件通过层级定位来操作或者通过调用js来实现. 1.首先我们看一下如何通过层级定位来操作时间控件. 通过示例图可以看到,日期控件是无法输入日 ...

  5. 时间日期控件的处理-Selenium

    很多人问时间日期的空间怎么处理,但是时间日期控件各种各样,你可能遇到正常点的像这样: 当然也可能遇到难点的,像这样: 当然,也不排除会遇到变态的,像这样: 呵呵,真要一个个想着怎么去选择,简直是非人类 ...

  6. Python语言编写脚本时,对日期控件的处理方式

    对日期控件,日期控件的输入控一般是不能手动输入的:把readonly属性去掉就好 其实很简单,我们不去搞时间日期空间,我们把它当成一个普通的input框处理就好了! 但是,很多此类型input框都是禁 ...

  7. Selenium 日期控件处理

    在WEB测试时,我们会碰到需要输入日期的情况,如果输入框能直接输入,那最好不过了.但是很多时候,输入框是不可输入的,必须的点击日期控件才行. 现在就来聊聊对日期控件的两种操作方法,我们以12306网站 ...

  8. UI自动化之特殊处理三(日期控件\表格\富文本)

    日期控件\表格\富文本也是一些常遇到的需要特殊处理的定位 目录 1.日期控件 2.表格 3.富文本 1.日期控件 第一种:输入框属性为:readonly="readonly" # ...

  9. selenium+python 处理只读日期控件的2种方法

    前言 有时候测试过程中会遇到日期控件场景,这时候需要特殊处理,下文以12306网站为例 1.处理方式 通常是通过js去除只读属性(2种方法),然后通过send_keys重新写值 from time i ...

随机推荐

  1. .net System.IO之Stream的使用详解

    本篇文章是对.Net中System.IO之Stream的使用进行了详细的分析介绍,需要的朋友参考下 Stream在msdn的定义:提供字节序列的一般性视图(provides a generic vie ...

  2. css3实现的4种动画特效按钮

    今天要给大家介绍的是css3按钮,里面包含四种特效的动画,如下图: 在线预览    下载源码 实现html代码: <div align="center" class=&quo ...

  3. java基础篇---内存分析

    Java的并发采用的是共享内存模型(而非消息传递模型),线程之间共享程序的公共状态,线程之间通过写-读内存中的公共状态来隐式进行通信.多个线程之间是不能直接传递数据交互的,它们之间的交互只能通过共享变 ...

  4. 1:(0or1)

    public class User    {       public int ID { get; set; }       public string UserName { get; set; } ...

  5. mysql hive sql 进阶

    场景: 说明.1.上面的数据是经过规整的数据,step是连续的,这个可以通过row_number实现.连续是必要的一个条件因为在计算第二个查询条件时依赖这个顺序,如果step不是数字字段可以截取然后转 ...

  6. iOS内存管理和优化 from 刘延军

  7. Java中LinkedList实现原理

    数据结构 LinkedList是基于链表结构实现,所以在LinkedList类中包含了first和last两个指针(类型为Node).Node中包含了对prev节点.next节点的引用,这样就构成了双 ...

  8. 记录 am335x 因为 pinmux 配置不对导致 不断的原因

    其实很简单,是因为 中断不仅仅需要 gpio 的 input 属性, 还需要 pull_up 的数据 {"gpmc_ad11.gpio0_27", OMAP_MUX_MODE7 | ...

  9. Linxu Yum方式安装Mysql

    1.下载yum源 进入http://dev.mysql.com/downloads/repo/,下载RedHat Enterprise Linux 6 / Oracle Linux 6版.文件名称:m ...

  10. Go Revel - Templates(模板)

    revel使用Go官方的模板库.它会在两个目录查找模板文件: 1.应用的`views`目录以及它的所有子目录 2.revel库自己的`templates`目录 revel为错误页面提供了模板(在`de ...