HTML-код сайта немного сложнее.Ваш ввод //*[@id='select2-drop']/div/input
является «скрытым» (точка зрения html и селен).
Вам нужно нажать на определенный элемент: //*[@id='flights']/form/div[1]
, чтобы сделать его «видимым».
Таким образом, ваш код должен быть таким:
//After click on FLIGHTS...
driver.findElement(By.xpath("//*[@id='flights']/form/div[1]")).click();
Thread.sleep(2*1000);
driver.findElement(By.xpath("//*[@id='select2-drop']/div/input")).sendKeys("Moon");
Thread.sleep(2*1000);
ЕслиВы хотите лучше написать код Selenium, я рекомендую вам прочитать о явное ожидание .
Используя явное ожидание, ваш код будет выглядеть так:
(new WebDriverWait(driver, 10)).until(ExpectedConditions.elementToBeClickable(By.xpath("//*[@id='flights']/form/div[1]"))).click();
(new WebDriverWait(driver, 10)).until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//*[@id='select2-drop']/div/input")).sendKeys("Moon");
Это выглядитхуже, но лучше.
РЕДАКТИРОВАТЬ 1
Чтобы получить список предложений:
//after type in input, put a wait to be sure the suggestion list is loaded.
List<WebElement> list = driver.findElements(By.xpath("//*[@id='select2-drop']/ul/li/div"));
for(WebElement aux : list) {
System.out.println(aux.getText());
}