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;
}
}
答案 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)
您可以使用以下方法选择日期。在该方法中,您需要传递字符串参数日期,其中日期应遵循格式:
YYYY-MM-DD
如果日期和月份是两位数YYYY-M-D
如果日期和月份是一位数YYYY-M-DD
如果一天是两个月而一个月是一位数YYYY-MM-D
如果一天是一个月,则是两位数示例 - 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");
}
}
}