Selenium webdriver操作日历控件
来源:互联网 发布:php 源码 owncloud 编辑:程序博客网 时间:2024/04/30 11:47
一般的日期控件都是input标签下弹出来的,如果使用webdriver 去设置日期,
1. 定位到该input
2. 使用sendKeys 方法
比如:
但是,有的日期控件是readonly的
比如12306的这个
<input id="train_date" class="inp-txt" type="text" value="2015-03-15" name="back_train_date" autocomplete="off" maxlength="10" readonly="readonly" disabled="disabled">
这个时候,没法调用WebElement的sendKeys()
方案一:使用JS remove readonly attribute,然后sendKeys
还是以万恶的12306为例:
使用出发日期,将input标签的readonly熟悉去掉
JavascriptExecutor removeAttribute = (JavascriptExecutor)driver;
//remove readonly attribute
removeAttribute.executeScript("var setDate=document.getElementById(\"train_date\");setDate.removeAttribute('readonly');") ;
方案二:采用click直接选择日期,日期控件是一个iframe,首先switch iframe,之后找到想要设置的日期button click,然后switch出来
WebElement dayElement=driver.findElement(By.xpath("//span[@id='from_imageClick']"));
dayElement.click();
// WebElement frameElement=driver.findElement(By.xpath("//iframe[@border='0']"));
driver.switchTo().frame(1);
driver.findElement(By.xpath("//tr/td[@onclick='day_Click(2015,2,21);']")).click();
driver.switchTo().defaultContent();
具体代码如下:
WebDriver driver=DriverFactory.getFirefoxDriver();
driver.get("https://kyfw.12306.cn/otn/");
driver.manage().window().maximize();
driver.manage().timeouts().pageLoadTimeout(60, TimeUnit.SECONDS);
driver.manage().window().maximize();
driver.manage().timeouts().implicitlyWait(60, TimeUnit.SECONDS);
driver.manage().timeouts().pageLoadTimeout(30, TimeUnit.SECONDS);
WebElement fromStation=driver.findElement(By.xpath("//input[@id='fromStationText']"));
fromStation.click();
fromStation.sendKeys("郑州");
WebElement choseFrom =driver.findElement(By.xpath("//div/span[@class='ralign' and text()='郑州']"));
choseFrom.click();
WebElement toStation=driver.findElement(By.xpath("//input[@id='toStationText']"));
toStation.click();
toStation.sendKeys("上海");
WebElement choseElement =driver.findElement(By.xpath("//div/span[@class='ralign' and text()='上海']"));
choseElement.click();
JavascriptExecutor removeAttribute = (JavascriptExecutor)driver;
//remove readonly attribute
removeAttribute.executeScript("var setDate=document.getElementById(\"train_date\");setDate.removeAttribute('readonly');") ;
WebElement setDatElement=driver.findElement(By.xpath("//input[@id='train_date']"));
setDatElement.clear();
setDatElement.sendKeys("2015-02-18");
WebElement dayElement=driver.findElement(By.xpath("//span[@id='from_imageClick']"));
dayElement.click();
// WebElement frameElement=driver.findElement(By.xpath("//iframe[@border='0']"));
driver.switchTo().frame(1);
driver.findElement(By.xpath("//tr/td[@onclick='day_Click(2015,2,21);']")).click();
driver.switchTo().defaultContent();
WebElement searchElement=driver.findElement(By.xpath("//div/a[@id='a_search_ticket']"));
searchElement.click();
0 0
- Selenium webdriver操作日历控件
- Selenium webdriver操作日历控件
- Selenium webdriver 操作日历控件
- selenium操作日历控件(java版本)
- selenium webdriver 操作浏览器
- selenium webDriver 鼠标操作
- selenium操作webdriver(一)
- Selenium webdriver 学习笔记(三) - 基本UI控件操作
- Selenium webdriver 学习笔记(三) - 基本UI控件操作
- selenium Webdriver 操作chrome浏览器
- Selenium WebDriver操作ligerui记录
- Selenium WebDriver的操作说明
- Selenium webdriver 之浏览器操作
- Selenium Webdriver常用JS操作
- selenium webdriver 模拟键盘操作
- selenium+python关于操作日历控件实现向日历文本框传递值的方法
- Selenium-java-js操作日历
- 【转】Selenium WebDriver的简单操作说明
- 完美适应iOS中的键盘高度变化
- 资源列表
- Java中urlrewriter的使用
- Socket 网络通信协议 http、TCP/IP协议与socket之间的区别
- 服务器 mac安装nginx环境
- Selenium webdriver操作日历控件
- 【Java类和对象】奥特曼打怪兽练习
- 全局静态存储区、堆区和栈区深入剖析
- 关于big-endian和little-endian小程序
- 傅盛豹变
- libpomelo使用
- 官方否认"成都金牛区政协会上警察抓人"
- C++String 类中的常用函数
- 【python】python环境配置