Обновлен ответ, чтобы нажать следующую дату.
//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 Driver во время выполнения для использования Java SeleniumWebDrivers
ПРИМЕЧАНИЕ: Если вы выбираете DEPART DATE
, который был выбран автоматически, то селен выдает исключение
Исключение в потоке "main" 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>