日期控件大都是input标签下弹出来的,如果使用webdriver 去设置日期,
1. 定位到该input
2. 使用sendKeys 方法
比如:
但是,有的日期控件是readonly的,没法调用WebElement的sendKeys()
比如:
办法一:使用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 attributeremoveAttribute.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();