如何在Selenium WebDriver中选择出生日期的日期选择器

时间:2016-09-27 18:50:32

标签: javascript jquery selenium

我使用Selenium WebDriver进行Web自动化测试并使用Java编写脚本。

这是一个美好的一天,直到我必须停下来选择约会的诞生"。我想知道如何在日期选择器下拉列表中选择日期,月份和年份的值。我想选择的日期是1966年12月14日。

地址:http://radcard-cloud.idatamap.com/login

Photo of the calendar

这是我尝试的最后一个代码。我花了差不多4天试图完成它。求救!



package iDMautomation;
 
import org.openqa.selenium.By;
import org.openqa.selenium.Keys;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.support.ui.ExpectedConditions;
import org.openqa.selenium.support.ui.Select;
import org.openqa.selenium.support.ui.WebDriverWait;
import java.util.List;
import org.openqa.selenium.firefox.*;
import java.util.concurrent.*;

public class FirstTest {
     

	public static void main(String[] args) {
         
        //initialize Chrome driver
        System.setProperty("webdriver.chrome.driver", "C:\\Users\\senn\\Desktop\\RadCard Test\\Selenium\\chromedriver_win32\\chromedriver.exe");
         WebDriver driver = new ChromeDriver(); 
        
         
         //Open gmail
         driver.get("http://radcard-cloud.idatamap.com/");
         driver.manage().window().maximize();
          
         //driver.findElements(By.xpath(xpathExpression))
         // Enter userd id
         
         driver.findElement(By.className("patient")).click();
          
         //email pedram
         //driver.findElement(By.className("providerNum")).click();
         WebDriverWait wait = new WebDriverWait(driver, 20);// 1 minute 
         wait.until(ExpectedConditions.visibilityOfElementLocated(By.id("email")));

         
         driver.findElement(By.id("email")).click();
         driver.findElement(By.id("email")).sendKeys("pedram@sahihi.com");
         
         driver.findElement(By.id("PIN")).sendKeys("2281");
         
         driver.findElement(By.id("DOB")).click();
         
        
         Select sel1=new Select(driver.findElement(By.cssSelector("DOB")));       
         WebElement FirstTest = driver.findElement(By.id("DOB"));
         
         driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
         driver.findElement(By.className("ui-datepicker-current-day")).click();
         
         Select sel3=new Select(driver.findElement(By.cssSelector("selectDay")));
         
         new Select((WebElement) sel3).selectByVisibleText("14");      
         
         FirstTest.sendKeys(Keys.ENTER);




1 个答案:

答案 0 :(得分:0)

首先,这看起来像Java,而不是JavaScript,所以你的标签可能不正确。

好的,让我们一次打破一个。 你会手动做什么:

  1. 点击"出生日期"
  2. 的输入字段
  3. 等待日历填充并变为可见
  4. 选择一个月
    您有此菜单的类名,每个选项都有一个值和文本可供选择
  5. 选择一年 (重复步骤3,使用不同的班级名称和菜单选项)
    这可能更容易,因为您的下拉菜单的值与您想要的年份完全一致
  6. 你想"点击"可见日历月的日期
  7. 很少有问题,可能是您的代码无效的原因

    driver.findElement(By.className("ui-datepicker-current-day")).click();
    
    Select sel3=new Select(driver.findElement(By.cssSelector("selectDay")));
    
    new Select((WebElement) sel3).selectByVisibleText("14"); 
    

    这里的第一行表明你试图点击今天的日期,而不是特别是第14次

    第二行和第三行看起来像是在日历日尝试进行选择,但是对于不是下拉选择菜单的元素,您不能这样做。你只能点击它。另外,我很确定cssSelector(" selectDay")不起作用。它不知道您是否正在寻找ID,类名,标记名等。我看到了其中几个cssSelector问题。

    同样在这里的第三行,为什么要创建一个新的Select到WebElement? 你应该可以做到

    sel3.selectByVisibleText("14");
    

    DOB是ID吗?你有一个

     driver.findElement(By.id("DOB")).click();;
    

    然后另一个

    Select sel1=new Select(driver.findElement(By.cssSelector("DOB")));