场景:一般的日期控件都是input标签下弹出来的,如果使用webdriver 去设置日期,

    1. 定位到该input

2. 使用sendKeys 方法

但是,有的日期控件是readonly的 ,比如神州租车 https://mycar.zuche.com/ 。这个时候,没法调用WebElement的sendKeys()

解决方案:使用JS remove readonly attribute,然后sendKeys

一、Feature 示例

    @E-999
Scenario: E-999:如何定位隐藏元素定位
Then I serach hidden Element 我的订单
Then I select Order date range
|开始日期 | 结束日期 |
|2018-01-01| @today |
Then I verify order information contains 还没租过车?

二、Step 示例:

  @Then("^I select Order date range$")
public void i_select_Order_date_range(DataTable data) throws Exception {
HashMap<String, String> hash = DataTableUtils.toHashMap(data);
String startDate = hash.get("开始日期");
String endDate = Utils.getDate(hash.get("结束日期 "));
pr.selectOrderDateRange(startDate, endDate);
} @Then("^I verify order information contains (.+)$")
public void i_verify_order_information_contains(String info) throws Exception {
pr.verifyOrderInformationContains(info);
}

三、Page 示例:

     /**
* 选择订单日期范围
* @param startDate 开始日期
* @param endDate 结束日期
*/
public void selectOrderDateRange(String startDate, String endDate){
7 String js = "document.getElementById('fromDate').removeAttribute('readonly');";
8 WebDriverUtils.executeJS(""+ js +"", driver);
9 putInValue(By.xpath("//input[@id='fromDate']"), startDate);
String toDate = "document.getElementById('toDate').removeAttribute('readonly');";
WebDriverUtils.executeJS(""+ toDate +"", driver);
putInValue(By.xpath("//input[@id='toDate']"), startDate);
waitFor(By.xpath(".//input[@id='searchBtn']")).click();
} public void verifyOrderInformationContains(String info) {
String actual = waitFor(By.xpath(".//img[contains(@src,'grayben.png')]//following-sibling::*[1]")).getText().trim();
Assert.isContains(actual, info, "验证查询信息");
} }

Java+selenium 如何操作日历控件的更多相关文章

  1. Selenium webdriver 操作日历控件

    一般的日期控件都是input标签下弹出来的,如果使用webdriver 去设置日期, 1. 定位到该input 2. 使用sendKeys 方法 比如: 但是,有的日期控件是readonly的 比如1 ...

  2. Selenium webdriver操作日历控件

    一般的日期控件都是input标签下弹出来的,如果使用webdriver 去设置日期, 1. 定位到该input 2. 使用sendKeys 方法 比如:使用定位: driver.findElement ...

  3. selenium操作日历控件

    日历控件是web网站上经常会遇到的一个场景,有些输入框是可以直接输入日期的,有些不能,以我们经常抢票的12306网站为例,详细讲解如何解决日历控件为readonly属性的问题. 基本思路:先用js去掉 ...

  4. selenium webdriver——JS操作日历控件

    一般的日期控件都是input标签下弹出来的,如果使用webdriver 去设置日期, 1. 定位到该input 2. 使用sendKeys 方法 比如 但是,有的日期控件是readonly的 比如12 ...

  5. selenium+Python(Js处理日历控件)

    日历控件是web网站上经常会遇到的一个场景,有些输入框是可以直接输入日期的,有些不能,以我们经常抢票的12306网站为例,详细讲解如何解决日历控件为readonly属性的问题. 基本思路:先用js去掉 ...

  6. selenium - js日历控件处理

    # 13. js处理日历控件 ''' 在web自动化的工程中,日历控制大约分为两种: 1. 可以直接输入日期 2. 通过日历控件选择日期 基本思路: 利用js去掉readonly属性,然后直接输入时间 ...

  7. PyQt5日历控件及相关操作

    1.日历控件QCalendarWidget控件import sys,mathfrom PyQt5.QtWidgets import *from PyQt5.QtGui import *from PyQ ...

  8. Selenium2+python自动化25-js处理日历控件(修改readonly属性)

    前言 日历控件是web网站上经常会遇到的一个场景,有些输入框是可以直接输入日期的,有些不能,以我们经常抢票的12306网站为例,详细讲解如何解决日历控件为readonly属性的问题. 基本思路:先用j ...

  9. Android 一个日历控件的实现代码

    转载  2017-05-19   作者:Othershe   我要评论 本篇文章主要介绍了Android 一个日历控件的实现代码,小编觉得挺不错的,现在分享给大家,也给大家做个参考.一起跟随小编过来看 ...

随机推荐

  1. Android美丽的对话框项目sweet-alert-dialog

    美丽的对话框 sweet-alert-dialog 项目地址: https://github.com/pedant/sweet-alert-dialog android原生的dialog太生硬了,之前 ...

  2. c++中局部变量初始化的问题

    在C语言里,全局变量如果不初始化的话,默认为0,也就是说在全局空间里: int x =0; 跟 int x; 的效果看起来是一样的.但其实这里面的差别很大,强烈建议大家所有的全局变量都要初始化,他们的 ...

  3. Android Studio下jni应用

    最近在将一个小应用从eclipse开发迁移到android studio,程序中有native代码实现,在eclipse是靠Android.mk这么个mk文件来组织编译的,但到android stud ...

  4. java注解中的元注解

    一:java注解中的元注解 四个元注解分别是:@Target,@Retention,@Documented,@Inherited , 再次强调下元注解是java API提供,是专门用来定义注解的注解, ...

  5. rem布局在react中的应用

    摘要: 前面给大家分享了一个react项目(http://www.cnblogs.com/xiyangbaixue/p/4751904.html),这次对这个项目做了一些改进,增加了rem布局和对is ...

  6. 设计模式-行为型模式,python 中介者模式

    中介者模式 中介者模式(Mediator Pattern)是用来降低多个对象和类之间的通信复杂性.这种模式提供了一个中介类,该类通常处理不同类之间的通信,并支持松耦合,使代码易于维护.中介者模式属于行 ...

  7. gdb 脚本调试

    在使用gdb调试程序的时候,有时候需要设定多个断点,重复执行某些操作,而这些操作写起来比较麻烦,这个时候就应该想起来用gdb命令脚本了,它能够很好的完成这些工作.以设置多个断点为例,我写的命令脚本为- ...

  8. windows系统下,express构建的node项目中,如何用debug控制调试日志

    debug是一款控制日志输出的库,可以在开发调试环境下打开日志输出,生产环境下关闭日志输出.这样比console.log方便多了,console.log只有注释掉才能不输出. debug库还可以根据d ...

  9. 一次项目实践中DBCP数据库连接池性能优化

    关于数据库连接池DBCP的关注源于刚刚结束的一轮测试,测试内容是衡量某Webserver服务创建用户接口的性能.这是一款典型的tomcat应用,使用的测试工具是Grinder.DBCP作为tomcat ...

  10. Spark RDD Transformation 简单用例(一)

    map(func) /** * Return a new RDD by applying a function to all elements of this RDD. */ def map[U: C ...