月份下拉列表在硒网络驱动程序的日期选择器中无法正常工作

Month dropdown not working properly in datepicker in selenium webdriver

本文关键字:常工作 工作 选择器 下拉列表 网络 日期 驱动程序      更新时间:2023-09-26

我正在尝试通过模拟帐户在Selenium webdriver java中自动化Salesforce的帐户创建页面。我正在从 D 驱动器中的 excel 文件中读取数据。

在日期选取器字段中,年份下拉列表工作正常,但月份下拉列表选择无法正常工作。月份下拉列表打开,所需的月份也会突出显示,它还到达并突出显示页面中的所需日期标签,但随后它会跳回到当前月份,即 11 月并从那里选择日期。

我无法理解这种行为。

String date, mon, year;
    int month, day;
    date = sh.getCell(27, 3).getContents();
    year = date.substring(6, 10);
    month = Integer.parseInt(date.substring(0, 2));
    day = Integer.parseInt(date.substring(3, 5));
    month = month-1;
    switch(month)
    {
        case 0 : mon = "January";   break;
        case 1 : mon = "February";  break;
        case 2 : mon = "March";     break;
        case 3 : mon = "April";     break;
        case 4 : mon = "May";       break;
        case 5 : mon = "June";      break;
        case 6 : mon = "July";      break;
        case 7 : mon = "August";    break;
        case 8 : mon = "September";     break;
        case 9 : mon = "October";       break;
        case 10 : mon = "November";     break;
        case 11 : mon = "December"; break;
        default : mon="Incorrect month input";
    }
    System.out.println(mon);
    Select dty;
    driver.findElement(By.xpath(".//*[@id='00N9000000Ctc7X']")).click();
    dty = new Select(driver.findElement(By.xpath(".//*[@id='calYearPicker']")));
    dty.selectByVisibleText(year);
    Select dtm;
    driver.findElement(By.xpath(".//*[@id='calMonthPicker']")).click();
    dtm = new Select(driver.findElement(By.xpath(".//*[@id='calMonthPicker']")));
    dtm.selectByVisibleText(mon);
    Thread.sleep(5000);
    WebElement dp = driver.findElement(By.xpath(".//*[@id='datePicker']/div[2]"));
    List<WebElement> colmn;
    colmn = dp.findElements(By.tagName("td"));
    int dat=0; flag=0;
    for(WebElement we : colmn)
    {
        System.out.println(we.getText());
        dat = Integer.parseInt(we.getText());
        String clas = we.getAttribute("class");
        try 
        {                   
            if((day==dat) && ((clas.equals("weekday") || (clas.equals("weekend")))))
            {
                we.click(); Thread.sleep(5000);
                flag=1;
                break;
            }
        }
        catch(Exception e)
            {
                e.printStackTrace();
            }
    }   
    if(flag==0)
        System.out.println("Incorrect Date");

下面是Subh给出的评论,它正确回答了我的问题。

真。您必须创建 Select 类的对象,就像这个Select sel = new Select(driver.findElement(By.xpath("//xpath of the element")));一样,然后使用"selectByValue"或 selectByVisibleText 或 selectByIndex' 方法来选择正确的下拉值。另一方面,有时下拉列表不是使用"选择"标签进行的,您必须首先单击下拉列表,然后单击下拉列表中的结果选项。