【问题标题】:How to select the Date Picker In Selenium WebDriver for Date of Birth如何在 Selenium WebDriver 中为出生日期选择日期选择器
【发布时间】:2016-09-27 18:50:32
【问题描述】:

我正在使用 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);

【问题讨论】:

  • 您想要从 66 年开始的某个日期吗?您想使用日历选择它还是只是设置它?

标签: javascript jquery selenium


【解决方案1】:

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

好的,让我们一次分解一个。 您将手动执行的操作:

  1. 点击“出生日期”的输入字段
  2. 等待日历填充并变为可见
  3. 选择月份
    你有这个菜单的类名,每个选项都有一个值和文本可供选择
  4. 选择年份 (使用不同的类名和菜单选项重复第 3 步)
    这可能会更容易,因为您的下拉菜单中的值与您想要的年份完全一致
  5. 您想要“单击”可见日历月中的日期

几件令人担忧的事情,这可能是您的代码无法正常工作的原因

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");

出生日期是身份证吗?你有一个

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

然后是另一个

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-03-22
    • 2014-02-19
    • 2018-01-17
    • 1970-01-01
    • 1970-01-01
    • 2012-04-29
    • 2021-07-28
    相关资源
    最近更新 更多