Reputation: 15
whenever my code is executing it is getting navigating to some other page. My code is of how to handle with calendar in selenium. please help
package basic;
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.chrome.ChromeDriver;
public class calender {
public static void main(String[] args) {
// TODO Auto-generated method stub
WebDriver driver = new ChromeDriver();
//Launching website
driver.manage().timeouts().implicitlyWait(15, TimeUnit.SECONDS);
driver.get("https://www.path2usa.com/travel-companions");
//selecting dates
driver.findElement(By.xpath("//*[@id=\"travel_date\"]")).click();
while(!driver.findElement(By.cssSelector("[class='datepicker-days'] th[class='datepicker-switch']")).getText().contains("April"))
{
driver.findElement(By.cssSelector("[class='datepicker-days'] th[class='next']")).click();
}
List<WebElement> dates = driver.findElements(By.className("day"));
//grab common attribute // put into list and iterate
int count = driver.findElements(By.className("day")).size();
for(int i=0;i<count;i++)
{
String text = driver.findElements(By.className("day")).get(i).getText();
if(text.equalsIgnoreCase("23"))
{
driver.findElements(By.className("day")).get(i).click();
break;
}
}
}
}
starting ChromeDriver 73.0.3683.68 (47787ec04b6e38e22703e856e101e840b65afe72) on port 13761
Only local connections are allowed.
Please protect ports used by ChromeDriver and related test frameworks to prevent access by malicious code.
Apr 01, 2019 9:38:18 AM org.openqa.selenium.remote.ProtocolHandshake createSession
INFO: Detected dialect: OSS
Exception in thread "main" org.openqa.selenium.NoSuchElementException: Cannot locate an element using css selector=[class='datepicker-days'] th[class='datepicker-switch']
For documentation on this error, please visit: https://www.seleniumhq.org/exceptions/no_such_element.html
Build info: version: '3.141.59', revision: 'e82be7d358', time: '2018-11-14T08:25:48'
System info: host: 'Nilufars-MacBook-Air.local', ip: '2405:204:4383:7327:1104:ad36:576:9d64%en0', os.name: 'Mac OS X', os.arch: 'x86_64', os.version: '10.12.6', java.version: '1.8.0_201'
Driver info: driver.version: RemoteWebDriver
at org.openqa.selenium.remote.RemoteWebDriver.findElement(RemoteWebDriver.java:327)
at org.openqa.selenium.remote.RemoteWebDriver.findElementByCssSelector(RemoteWebDriver.java:420)
at org.openqa.selenium.By$ByCssSelector.findElement(By.java:431)
at org.openqa.selenium.remote.RemoteWebDriver.findElement(RemoteWebDriver.java:315)
at basic.calender.main(calender.java:23)
Upvotes: 0
Views: 383
Reputation: 14135
Welcome to SO. You can directly select the date as shown below.
driver.findElement(By.xpath("//input[@name='travel_date']")).sendKeys("25 May 2019");
This way you will save your execution time by ignoring the month loop and date loop.
Simplified code:
driver.manage().timeouts().implicitlyWait(15, TimeUnit.SECONDS);
driver.get("https://www.path2usa.com/travel-companions");
//selecting the date
driver.findElement(By.xpath("//input[@name='travel_date']")).sendKeys("25 May 2020");
//continue your test with next steps
// quit the driver.
driver.quit();
Upvotes: 1