日期选择器的硒代码

时间:2015-01-03 05:56:54

标签: java selenium-webdriver

yatra.com网站,我无法找到xpath,但是我使用了readonly属性,但我希望日期应该从datepicker中选择。这是我的代码。

     WebElement dateWidget = driver.findElement(By.xpath("//*[@id='BE_flight_depart_date']"));
     dateWidget.click();
     List<WebElement> columns=dateWidget.findElements(By.xpath("//*[@id='calmain']"));  

     //comparing the text of cell with today's date and clicking it.
     for (WebElement cell : columns)
     {
        if (cell.getText().equals(today))
        {
           cell.click();
           break;
        }
     }

4 个答案:

答案 0 :(得分:0)

如果您尝试切换到datepicker窗口 - 我注意到它是一个“窗口”对象,您可能需要在尝试选择日期之前切换窗口。

代码看起来像这样 -

Set<String> windowHandles = driver.getWindowHandles();
for(String handle : windowHandles){  
    driver.switchTo().window(handle);  
    if (driver.getAttribute(“name”).contains("data-citycode")) {
      break;  
    }  
 }

注意:我没有测试过这段代码,试试看。你需要切换回活动完成的主窗口。

答案 1 :(得分:0)

尝试使用此代码选择日期:

dr.findElement(By.cssSelector(".sprite.calenderIcon[onclick*='DepartDate']"))
        .click();
dr.findElement(By.xpath(".//*[@id='a_2015_1_16']")).click(); // for selecting 16 jan

答案 2 :(得分:0)

您可以使用以下方法选择日期。在该方法中,您需要传递字符串参数日期,其中日期应遵循格式:

  1. YYYY-MM-DD如果日期和月份是两位数
  2. YYYY-M-D如果日期和月份是一位数
  3. YYYY-M-DD如果一天是两个月而一个月是一位数
  4. YYYY-MM-D如果一天是一个月,则是两位数
  5. 示例 - 2015年1月2日的通过日期为2015-1-2,2015年1月25日的通过日期为2015-1-25

    public void selectYatraDate(String date) {
      date = date.replace("-", "_");
      String dateLocator = "a_" + date;
    
      driver.findElement(By.xpath("//i[@class='sprite calenderIcon']")).click();
      driver.findElement(By.id(dateLocator)).click();
    }
    

答案 3 :(得分:0)

import java.util.List;
import java.util.concurrent.TimeUnit;

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.ie.InternetExplorerDriver;
import org.openqa.selenium.remote.CapabilityType;
import org.openqa.selenium.remote.DesiredCapabilities;
import org.testng.Assert;
import org.testng.annotations.Test;

public class Stack {
    WebDriver driver;

    @Test
    public void clickDate() {
        String PROXY = "Give your IP address and port";

        org.openqa.selenium.Proxy proxy = new org.openqa.selenium.Proxy();
        proxy.setHttpProxy(PROXY).setFtpProxy(PROXY).setSslProxy(PROXY);
        DesiredCapabilities cap = new DesiredCapabilities();
        cap.setCapability(CapabilityType.PROXY, proxy);

        driver = new FirefoxDriver(cap);
        driver.manage().window().maximize();
        driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
        driver.get("http://www.yatra.com/");
        driver.findElement(
                By.cssSelector("ul[class='travelDetails clearfix']>li[class='flL relative']>i[class='sprite calenderIcon']"))
                .click();

        boolean status = false;
        String givenDay = "31";
        List<WebElement> getCalendardays = driver
                .findElements(By
                        .xpath("//div[@id='js_mainclaendar']/div/table[@class='tableCanleder']/tbody/tr/td[contains(@class,'tdOff activeTD')]"));

        for (int i = 0; i < getCalendardays.size(); i++) {
            String sdays = getCalendardays.get(i).getText();
            if (givenDay.equals(sdays)) {
                status = true;
                getCalendardays.get(i).click();
                break;
            }
        }
        if (status == false) {
            Assert.fail("Not able to find the day"
                    + "("
                    + givenDay
                    + ")"
                    + "in calendar. The resason might be 1.The given day is not in calendar. 2. The given day might be disable");
        }
    }

}