Обновлен ответ, чтобы нажать следующую дату.
//div[contains(@class, 'ui-datepicker-group-first')]//td[@data-month='9' and @data-year='2018']/a[.=31]
Вы можете изменить указанный выше XPATH
, чтобы выбрать дату на основе YEAR/MONTH/DATE
. для получения дополнительной информации XPath creation go-through my answers
.
var path ="//div[contains(@class, 'ui-datepicker-group-first')]//td[@data-month='9' and @data-year='2018']/a[.=31]";
var elem = document.evaluate(path, window.document, null, 9, null ).singleNodeValue;
console.log( elem );
elem.click();
Когда вы вводите данные FROM
и TO
, автоматически выбирается поле DEPART DATE
. Итак, вам просто нужно выбрать первые данные с помощью javascript.
FROM « //div[@id='ctl00_mainContent_ddl_originStation1_CTNR']//a[@text='Guwahati (GAU)']
TO « //div[@id='ctl00_mainContent_ddl_destinationStation1_CTNR']//a[@text='Goa (GOI)']
DEPART DATE «
//div[contains(@class, 'ui-datepicker-group-first')]//a[contains(@class, 'ui-state-active')]
образец тестовой программы.
import io.github.yash777.driver.Browser;
import io.github.yash777.driver.Drivers;
import io.github.yash777.driver.WebDriverException;
public class SpiceJET {
static WebDriver driver;
static WebDriverWait explicitWait;
public static void main(String[] args) throws WebDriverException, IOException {
test();
}
public static void test() throws WebDriverException, IOException {
Drivers drivers = new Drivers();
String driverPath = drivers.getDriverPath(Browser.CHROME, 63, "");
System.setProperty(ChromeDriverService.CHROME_DRIVER_EXE_PROPERTY, driverPath);
DesiredCapabilities capabilities = DesiredCapabilities.chrome();
driver = new ChromeDriver( capabilities );
explicitWait = new WebDriverWait(driver, 10);
//Maximize browser window
driver.manage().window().maximize();
//Go to URL which you want to navigate
driver.get("https://spicejet.com/");
clickElement("//input[@id='ctl00_mainContent_ddl_originStation1_CTXT'][1]");
clickElement("//div[@id='ctl00_mainContent_ddl_originStation1_CTNR']//a[@text='Guwahati (GAU)']");
clickElement("//input[@id='ctl00_mainContent_ddl_destinationStation1_CTXT'][1]");
clickElement("//div[@id='ctl00_mainContent_ddl_destinationStation1_CTNR']//a[@text='Goa (GOI)']");
clickUsingJavaScript("//div[contains(@class, 'ui-datepicker-group-first')]//a[contains(@class, 'ui-state-active')]");
}
}
public static void clickElement(String locator) {
By findBy = By.xpath( locator );
WebElement element = explicitWait.until(ExpectedConditions.elementToBeClickable( findBy ));
element.click();
}
public static void clickUsingJavaScript( String locator ) {
StringBuffer click = new StringBuffer();
click.append("var elem = document.evaluate(\""+locator+"\", window.document, null, 9, null ).singleNodeValue;");
click.append("elem.click();");
System.out.println("JavaScript Click.");
jse.executeScript( click.toString() );
}
Для автоматического управления исполняемым файлом драйвера Selenium во время выполнения для Java используйте SeleniumWebDrivers
< /а>
ПРИМЕЧАНИЕ. Если вы выбираете DEPART DATE
, который был выбран автоматически, селен выдает исключение.
Исключение в потоке «основной» org.openqa.selenium.WebDriverException: неизвестная ошибка: элемент <input type="text" readonly="readonly" id="ctl00_mainContent_view_date2" class="custom_date_pic required home-date-pick">
не доступен для клика в точке (784, 241). Другой элемент получит клик: <span class="ui-datepicker-month">...</span>
person
Yash
schedule
29.10.2018
click on the next date
. - person Yash   schedule 30.10.2018