selenium 操作日期控件

在遇到使用Selenium无法直接通过sendKeys()修改readonly属性的日期控件时,可以采取两种方法:1. 通过JavaScript移除readonly属性后再输入;2. 切换到日期控件所在的iframe,点击特定日期按钮完成选择。示例代码中展示了如何实现这两个方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

日期控件大都是input标签下弹出来的,如果使用webdriver 去设置日期,

1. 定位到该input

2. 使用sendKeys 方法 

比如:


但是,有的日期控件是readonly的,没法调用WebElement的sendKeys()

比如:

<input id="BeginTime" class="form-control" type="text" style="width:120px; float:left;" value="" readonly="readonly" placeholder="入职开始时间" name="BeginTime" data-val-date="字段 BeginTime 必须是日期。" data-val="true">
<span style="font-size: 20px; float: left;">-</s

办法一:使用JS remove readonly attribute,然后sendKeys

使用入职开始日期,将input标签的readonly熟悉去掉

         JavascriptExecutor removeAttribute = (JavascriptExecutor)driver;  
         //remove readonly attribute
         removeAttribute.executeScript("var setDate=document.getElementById(\"BeginTime\");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=new FirefoxDriver();
         driver.get("http://172.178.0.183");
         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);
         JavascriptExecutor removeAttribute = (JavascriptExecutor)driver;  
         //remove readonly attribute
removeAttribute.executeScript("var setDate=document.getElementById(\"BeginTime\");setDate.removeAttribute('readonly');") ; WebElement setBeginDat=driver.findElement(By.id("BeginTime")); setBeginDat.clear();
setBeginDat.sendKeys("2015-02-18");
WebElement setEndDat=driver.findElement(By.id("EndTime"));
         setEndDat.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();     
复制代码
原文:http://www.cnblogs.com/tobecrazy/p/4206742.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值