Java+Selenium3方法篇34-如何处理日历控件【转载】

这篇介绍webdriver如何处理日历控件,有些web产品,网页上有一些时间选择,然后支持按照不同时间段范围去筛选数据。网页上日历控件一般,是一个文本输入框,鼠标点击,就会弹出日历界面,可以选择具体日期。这篇,就是介绍用selenium如何自动化脚本实现。

1.先看一个完全模仿手工操作的场景,点击输入框,点击下一个月,选择17日。当前是2017=07-01,假如我们要设置成2017-08-17.

[java] view plain copy
  1. package lessons;  
  2.   
  3. import java.util.concurrent.TimeUnit;  
  4.   
  5. import org.openqa.selenium.By;  
  6. import org.openqa.selenium.WebDriver;  
  7. import org.openqa.selenium.WebElement;  
  8. import org.openqa.selenium.chrome.ChromeDriver;  
  9.   
  10. public class HandleDate {  
  11.     public static void main(String[] args) throws Exception {    
  12.           
  13.         System.setProperty("webdriver.chrome.driver", ".\\Tools\\chromedriver.exe");    
  14.              
  15.         WebDriver driver = new ChromeDriver();    
  16.        
  17.         driver.manage().window().maximize();    
  18.          
  19.         driver.manage().timeouts().implicitlyWait(8, TimeUnit.SECONDS);  
  20.             
  21.         driver.get("http://jqueryui.com/resources/demos/datepicker/default.html");    
  22.          
  23.         Thread.sleep(2000);  
  24.           
  25.         // 日期输入框  
  26.         WebElement date_inputbox = driver.findElement(By.id("datepicker"));  
  27.           
  28.         //鼠标点击日期输入框  
  29.         date_inputbox.click();  
  30.         // 点击下一个月  
  31.         driver.findElement(By.xpath("//*[@id='ui-datepicker-div']/div/a[@data-handler='next']")).click();  
  32.         // 点击17日,xpath定义第三行第五个元素,可能每个月排序不一样,所以不一定点击的就是17日  
  33.         driver.findElement(By.xpath("//*[@id='ui-datepicker-div']/table/tbody/tr[3]/td[5]/a")).click();  
  34.         
  35.       }  
  36. }  

       运行发现,确实可以实现选择时间,但是这样是不是太麻烦和啰嗦,上面的定义了第三行第五列,但是不同月份,这个值肯定不相同。有没有更好的方法呢?当然有,如果遇到这样的日期控件,直接把当做正常的文本输入框,然后调用sendKeys()方法,直接传一个带格式的日期数据进入就可以。

[java] view plain copy
  1. package lessons;  
  2.   
  3. import java.util.concurrent.TimeUnit;  
  4.   
  5. import org.openqa.selenium.By;  
  6. import org.openqa.selenium.WebDriver;  
  7. import org.openqa.selenium.WebElement;  
  8. import org.openqa.selenium.chrome.ChromeDriver;  
  9.   
  10. public class ElementOpration {  
  11.     public static void main(String[] args) throws Exception {    
  12.           
  13.         System.setProperty("webdriver.chrome.driver", ".\\Tools\\chromedriver.exe");    
  14.              
  15.         WebDriver driver = new ChromeDriver();    
  16.        
  17.         driver.manage().window().maximize();    
  18.          
  19.         driver.manage().timeouts().implicitlyWait(8, TimeUnit.SECONDS);  
  20.             
  21.         driver.get("http://jqueryui.com/resources/demos/datepicker/default.html");    
  22.          
  23.         Thread.sleep(2000);  
  24.           
  25.         // 日期输入框  
  26.         WebElement date_inputbox = driver.findElement(By.id("datepicker"));  
  27.         date_inputbox.sendKeys("08/17/2017");  
  28.           
  29.         
  30.       }  
  31. }  

posted on 2018-05-02 13:56  okeymen  阅读(69)  评论(0)    收藏  举报

导航