解决日历控件

上一篇 / 下一篇  2015-02-05 17:39:04 / 个人分类:自动化测试之WebDriver+Selenium

一般的日期控件都是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">

  这个时候,没法调用WebElementsendKeys()

  方案一:使用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();

 


TAG:

 

评分:0

我来说两句

日历

« 2024-05-02  
   1234
567891011
12131415161718
19202122232425
262728293031 

数据统计

  • 访问量: 43518
  • 日志数: 15
  • 建立时间: 2014-08-04
  • 更新时间: 2015-10-21

RSS订阅

Open Toolbar