前言

一般的日期控件都是input标签下弹出来的,设置日期使用selenium中的sendKeys 方法就可以解决。

但是我们也会碰到下面的时间日期控件(这个时候这个文本框是不允许我们输入时间的)如图:

这个时候,没法调用WebElement的sendKeys(),像这种选择时间的input标签都会有一个readonly属性,这个时候我们就只能选择时间,不能手动输入,那么这种情况,我们该怎么处理呢?

通过JS选择日期

具体代码示例如下:

  /**
* 通过JS选择日期
*/
@Test
public void testByJs() {
driver.get("https://huoche.cncn.com/train-%B4%F3%C1%AC-%C9%F2%D1%F4");
driver.manage().window().maximize();
JavascriptExecutor removeAttribute = (JavascriptExecutor) driver;
//remove readonly attribute
removeAttribute.executeScript("var setDate=document.getElementById(\"date\").removeAttribute('readonly');");
//输入要输入日期
driver.findElement(By.id("date")).clear();
driver.findElement(By.id("date")).sendKeys("2019-08-31");
//点击查询
driver.findElement(By.id("searchBtn")).click();
//获取输入后日期显示
String value = driver.findElement(By.id("date")).getAttribute("value");
//验证日期是否为选中的8月31日
Assert.assertEquals(value,"2019-08-31");
}

通过Iframe选择日期

具体代码示例如下:

  /**
* 通过Iframe选择日期
*/
@Test
public void testByIframe() {
driver.get("https://huoche.cncn.com/train-%B4%F3%C1%AC-%C9%F2%D1%F4");
driver.manage().window().maximize();
//点击日历控件
driver.findElement(By.id("date")).click();
//iframe框
WebElement iframe = driver.findElement(By.cssSelector("[src='about\\:blank']"));
//进入日历控件中操作
driver.switchTo().frame(iframe);
//选择31号即月末
driver.findElement(By.xpath("//tr/td[@onclick='day_Click(2019,8,31);']")).click();
//跳出日历控件操作
driver.switchTo().defaultContent();
//点击查询
driver.findElement(By.id("searchBtn")).click();
//获取输入后日期显示
String value = driver.findElement(By.id("date")).getAttribute("value");
//验证日期是否为选中的8月31日
Assert.assertEquals(value,"2019-08-31"); }

以上两种方法,都可实现选择日期操作,仅供参考,如果觉得好,可以关注我哦

Selenium+java - 日期控件的处理的更多相关文章

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

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

  2. selenium 处理日期控件

    今天遇到日期控件无法处理的问题,在北京-air的帮助下,看了下这篇blog http://www.cnblogs.com/Fskjb/archive/2011/10/27/2227111.html 根 ...

  3. 12 Python+selenium对日期控件进行处理(采用执行JS脚本)

    [环境信息] Python34+IE+windows2008 [说明] 1.对于日期控件,没有办法通过定位元素再直接传值的方式处理.可以采用执行JavaScript处理. PS:还要去学学js怎么写, ...

  4. 17.Selenium+Python日期控件小案例

    1.web上的控件种类十分多,但是大致分为2种,一种为类型是input的且可以输入,第二种为类型是input的且属性为readonly,文本框不可编辑 2.第一种类型为可以输入的,直接send_key ...

  5. python selenium 处理时间日期控件

    # -*- coding: utf-8 -*- from selenium import webdriverfrom time import sleep driver = webdriver.Fire ...

  6. Java+Selenium自动化对非输入框的日历或日期控件的处理

    如图:          1.问题描述: 在应用selenium实现web自动化时,经常会遇到处理日期控件点击问题,手工很简单,可以一个个点击日期控件选择需要的日期,但自动化执行过程中,完全复制手工这 ...

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

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

  8. Selenium 日期控件处理

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

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

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

随机推荐

  1. JavaScript 常见的六种继承方式

    JavaScript 常见的六种继承方式 前言 面向对象编程很重要的一个方面,就是对象的继承.A 对象通过继承 B 对象,就能直接拥有 B 对象的所有属性和方法.这对于代码的复用是非常有用的. 大部分 ...

  2. 100天搞定机器学习|Day7 K-NN

    最近事情无比之多,换了工作.组队参加了一个比赛.和朋友搞了一些小项目,公号荒废许久.坚持是多么重要,又是多么艰难,目前事情都告一段落,我们继续100天搞定机器学习系列.想要继续做这个是因为,一方面在具 ...

  3. Siimple DP (Dynamic Programing)

    HDU 2084:https://vjudge.net/problem/HDU-2084 Problem Describe : When it comes to the DP algorithm, a ...

  4. 设计模式——通用泛型单例(普通型和继承自MonoBehaviour)

    单例模式是设计模式中最为常见的,不多解释了.但应该尽量避免使用,一般全局管理类才使用单例. 普通泛型单例: public abstract class Singleton<T> where ...

  5. Latch设计模式

    import java.util.concurrent.ThreadLocalRandom; import java.util.concurrent.TimeUnit; public class Te ...

  6. [USACO09OCT]Invasion of the Milkweed】乳草的侵占-C++

    Farmer John一直努力让他的草地充满鲜美多汁的而又健康的牧草.可惜天不从人愿,他在植物大战人类中败下阵来.邪恶的乳草已经在他的农场的西北部份占领了一片立足之地. 草地像往常一样,被分割成一个高 ...

  7. c++小游戏——扫雷

    #include<cstdio> #include<cstring> #include<algorithm> #include<conio.h> #in ...

  8. 个人永久性免费-Excel催化剂功能第86波-人工智能之图像OCR文本识别全覆盖

    在上一年中,Excel催化剂已经送上一波人工智能系列功能,鉴于部分高端用户的需求,再次给予实现了复杂的图像OCR识别,包含几乎所有日常场景,让公司个人手头的图像非结构化数据瞬间变为可进行结构化处理分析 ...

  9. C# 针对特定的条件进行锁操作,不用lock,而是mutex

    背景:用户领取优惠券,同一个用户需要加锁验证是否已经领取,不同用户则可以同时领取. 上代码示例: 1.创建Person类 /// <summary> /// Person类 /// < ...

  10. sklearn使用技巧

    sklearn使用技巧 sklearn上面对自己api的解释已经做的淋漓尽致,但对于只需要短时间入手的同学来说,还是比较复杂的,下面将会列举sklearn的使用技巧. 预处理 主要在sklearn.p ...