场景:一般的日期控件都是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. hdoj:2042

    #include <iostream> using namespace std; int main() { int n,a; while (cin >> n) { while ...

  2. 二、主流区块链技术特点及Hyperledger Fabric V0.6版本特点

    一.主流区块链技术特点 二.HyperLedger子项目 三.Hyperledger fabric架构 V0.6逻辑架构: V0.6区块链网络 对应的0.6版本的运行时架构: 0.6版本的架构特点是: ...

  3. Java8学习笔记(三)--方法引入

    基本概念 格式 实例变量名 | 类名 :: 静态方法 | 实例方法 作用 简化Lambda表达式 示例 a -> System.out.println(a); <=> System. ...

  4. for循环 while循环 break跳出循环 continue结束本次循环 exit退出整个脚本

  5. 正整数序列Q中的每个元素都至少能被正整数a和b中的一个整除,现给定a和b,如何生成Q中的前几项

    思路分析:可以与归并排序联系起来,给定两个变量A.B,变量A轮着存放:a*1,a*2,a*3,……变量组B轮着存放:b*1,b*2,b*3,……有两个整数i.j,分别代表A.B第i.j次存放的值,每次 ...

  6. 8 -- 深入使用Spring -- 6...3 使用@Transactional

    8.6.3 使用@Transactional Spring还允许将事务配置放在Java类中定义,这需要借助于@Transactional注解,该注解即可用于修饰Spring Bean类,也可用于修饰B ...

  7. java.security.ProviderException: java.security.KeyException

    本机部署没问题,部署到linux服务器报错: javax.net.ssl.SSLException: java.security.ProviderException: java.security.Ke ...

  8. 看看大网站都用什么操作系统和Web服务器

    以下内容为网络上转载总结,不是很准确 Google 用哪些软件做 Web Server? 除了有两个节点操作系统看出来是 Linux 外,其他的都是未知的. Web 服务器用的都是 GWS ? 我估计 ...

  9. linux Email 体系

    大致了解了DNS与邮件服务器之间的关系后,接下来我们介绍邮件到底是如何传送到目的邮件主机的.下面我们分成“寄信”与“收信”两个主要的邮件服务器使用方式进行介绍.先说明关于“寄信”的部分.通常我们都是使 ...

  10. vagrant up connection time out

    vagrant up connection time out 在一台重装系统的机子上装vagrant后 vagrant up 无法启系统 D:\work\vagrant>vagrant up B ...