Selenium Datepicker, использующий JavascriptExecutor - PullRequest
1 голос
/ 26 февраля 2020

Пожалуйста, сообщите, если этот подход принят к дате получения с использованием Selenium

WebDriver driver = new ChromeDriver();

driver.manage().window().maximize();

driver.get("https://www.spicejet.com/");

Thread.sleep(3000);

JavascriptExecutor js = ((JavascriptExecutor)driver);

js.executeScript ("document.getElementById('ctl00_mainContent_view_date1').removeAttribute('readonly',0);"); 

WebElement onwards_date = driver.findElement(By.id("ctl00_mainContent_view_date1"));
        onwards_date.clear();
        onwards_date.sendKeys("28/02"); 

js.executeScript ("document.getElementById('ctl00_mainContent_view_date2').removeAttribute('readonly',0);"); 

WebElement return_Date = driver.findElement(By.id("ctl00_mainContent_view_date2"));
        return_Date.clear();
        return_Date.sendKeys("27/03"); 

Ответы [ 2 ]

1 голос
/ 26 февраля 2020

Чтобы выбрать дату в поле DEPART DATE на веб-сайте https://www.spicejet.com/, используя Селен * executeScript () метод из JavascriptExecutor Вы можете использовать следующие Стратегии локатора :

  • Кодовый блок:

    System.setProperty("webdriver.chrome.driver", "C:\\Utility\\BrowserDrivers\\chromedriver.exe");
    ChromeOptions options = new ChromeOptions();
    options.addArguments("start-maximized");
    options.setExperimentalOption("excludeSwitches", Collections.singletonList("enable-automation"));
    options.setExperimentalOption("useAutomationExtension", false);
    WebDriver driver =  new ChromeDriver(options);
    driver.get("https://www.spicejet.com/");
    WebElement element = driver.findElement(By.cssSelector("input[name$= 'txt_Fromdate']"));
    ((JavascriptExecutor)driver).executeScript("arguments[0].removeAttribute('readonly')", element);
    WebElement newElement = driver.findElement(By.cssSelector("input[name$= 'txt_Fromdate']"));
    ((JavascriptExecutor) driver).executeScript("arguments[0].setAttribute('value','28/02')", newElement);
    
  • Снимок браузера:

spicejetDepartureDate

1 голос
/ 26 февраля 2020

Вы можете установить значение с помощью JavaScript для ввода с ctl00_mainContent_txt_Fromdate идентификатором для от даты и ctl00_mainContent_txt_Todate идентификатором для до даты . Вы не увидите изменения значения в пользовательском интерфейсе, но оно работает.

js.executeScript("arguments[0].value = arguments[1]",
    driver.findElement(By.id("ctl00_mainContent_txt_Fromdate")), "28-02-2020");

Вместо использования sleep в коде, используйте WebDriverWait, что заставляет WebDriver ожидать определенного условия и будет ждать только как Пока требуется.

WebDriver driver = new ChromeDriver();
WebDriverWait wait = new WebDriverWait(driver, 10);
JavascriptExecutor js = (JavascriptExecutor) driver;
driver.manage().window().maximize();

driver.get("https://www.spicejet.com/");

// Wait for Search button to be clickable, the state in which we assume that the site has loaded
WebElement searchButton = wait.until(ExpectedConditions.elementToBeClickable(By.id("ctl00_mainContent_btn_FindFlights")));

// Select From and To Cities

js.executeScript("arguments[0].value = arguments[1]",
        driver.findElement(By.id("ctl00_mainContent_txt_Fromdate")), "28-02-2020");

js.executeScript("arguments[0].value = arguments[1]",
        driver.findElement(By.id("ctl00_mainContent_txt_Todate")), "01-03-2020");

searchButton.click();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...