基于Selenium的UI自动化之如何选择日期输入框

上一篇 / 下一篇  2016-05-09 15:39:42

Selenium操作日历控件

 

近日埋首伏案于自动化用例,发现日期输入框很难选中,尤甚不同业务前台命名、风格差异性之大,致使我们的自动化也不得不跟着随机变化。最初自动化的代码有如下写法:

newActions(driver).MoveToElement(driver.FindElement(By.Id("日期输入框ID"))).Click().Perform();

driver.FindElement(By.Id(String.Format("d_{0}", "日期值"))).Click();

这是属于比较传统的绝学,就像降龙十八掌,一招一式有板有眼,第一步点击、第二步选择,堂堂正正,对一般规范的前台来说是可以胜任日期选择功能的。

自然也有一些不太规范的前台界面,这时第一式武学就像一拳打在棉花上,不受力,对于不规范的前台代码,我们同样也需要剑出偏锋,比如:

SeleniumFun.SetPupUpInput(driver,By.Id("日期输入框ID"),By.Id("日历ID"),

By.Id(String.Format("{0}_calendar1", "日期值")));

此招式正如江湖传说的小李飞刀,所谓天下武功唯快不破,此式正如羚羊挂角,无迹可寻,谈笑间樯橹灰飞烟灭。

然则武功再高也怕菜刀,碰上有时服务器逗你玩带宽不给力脚本一直Loadload不完,肿么办?不着急,咱家还有一计:

driver.FindElement(By.Id("日期输入框ID")).Clear();

driver.FindElement(By.Id("日期输入框ID")).SendKeys("日期值");

此式可谓瞒天过海,直捣黄龙。避开繁杂的ID选择直接输入数值,通过大系统的判断规则径自进入下一步流程。名门正派或许看不上此种小道,然则三千大道,小道亦可证乾坤。

卷尾语:正所谓因地制宜,对症下药,UI代码不但多变,而且估计会持续的继续的良久的多变下去,从来没有万金油的代码,我们的自动化同样的需要流水不腐,户枢不蠹。

 

正所谓岁月如飞刀,刀刀催人老,UI代码日新月异,江湖经过了太久的平静,却不想又起波澜。

话说高铁网站的时间输入框曾是**稳定的代言词,也是英雄儿女的温柔乡,多年不曾变化的UI没曾想却是暗流涌动,各路代码纷纷败下阵来,大帅大声喝到:何人能取其首级!

中军帐下一时竟是鸦雀无声。

突然间一个银甲白袍小将分开众将士,拜至案前:某愿为大帅分忧!

大帅闻言大喜,招左右上前,亲手端起一杯温酒递给白袍小将:将军且饮胜此杯以壮胆气!

白袍小将却道:待我斩却此獠再饮未迟!

说完拍马向前,一时间竟声势无两:

driver.FindElement(By.Id(日期输入框ID)).Click();

string js = "document.getElementById(日期输入框ID).value='" +日期值+ "'";

((IJavaScriptExecutor)driver).ExecuteScript(js);

顷刻间时间已经选好,此时酒且尚温!

 

 

本文乃原创文章,未经作者同意,谢绝转载

 


TAG: Selenium selenium

 

评分:0

我来说两句

Open Toolbar