Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript selenium webdriver中的datepicker中的月份下拉列表无法正常工作_Javascript_Selenium_Datepicker - Fatal编程技术网

Javascript selenium webdriver中的datepicker中的月份下拉列表无法正常工作

Javascript selenium webdriver中的datepicker中的月份下拉列表无法正常工作,javascript,selenium,datepicker,Javascript,Selenium,Datepicker,我正试图通过一个演示帐户在SeleniumWebDriverJava中自动化Salesforce的帐户创建页面。我正在从D驱动器中的excel文件读取数据 在datepicker字段中,“年”下拉列表工作正常,但“月”下拉列表选择不正常。“月份”下拉列表打开,所需月份也会高亮显示,它也会到达并高亮显示页面中所需的日期标记,但随后它会跳回到当前月份,即11月,并从中选择日期 我无法理解这种行为 String date, mon, year; int month, day; date

我正试图通过一个演示帐户在SeleniumWebDriverJava中自动化Salesforce的帐户创建页面。我正在从D驱动器中的excel文件读取数据

在datepicker字段中,“年”下拉列表工作正常,但“月”下拉列表选择不正常。“月份”下拉列表打开,所需月份也会高亮显示,它也会到达并高亮显示页面中所需的日期标记,但随后它会跳回到当前月份,即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 Selectdriver.findElementBy.xpath//xpath;然后使用“selectByValue或selectByVisibleText或selectByIndex”方法选择适当的下拉值。另一方面,有时下拉列表不是使用select标记生成的,因此您必须先单击下拉列表,然后单击下拉列表中的结果选项。

如果是公开的,您能否提供重新测试代码的站点?或者,请提供上面Datepicker的html代码片段。我正在测试Salesforce网站,即www.Salesforce.com,任何人都可以注册并创建他们的帐户并测试应用程序。您可以在创建帐户,然后登录到帐户创建页面。有一个名为SLA到期日期的日期字段。此日期选择器在此处打开。此问题已解决。因此,我在这里结束这个问题。我用点击功能点击了月份下拉列表。在Mozilla Firefox中特别单击后,选择功能不起作用。因此,我在这里结束这个问题。您必须创建Select类的对象,如元素的Select sel=new Selectdriver.findElementBy.xpath//xpath;然后使用“selectByValue或selectByVisibleText或selectByIndex”方法选择适当的下拉值。另一方面,有时下拉列表不是通过使用select标记来实现的,因此您必须先单击下拉列表,然后单击下拉列表中的结果选项。