Проблема с отправкой ключей в поле формы, когда недоступна кнопка отправки - PullRequest
0 голосов
/ 11 декабря 2018

Я изучаю Selenium WebDriver для школьного проекта.В настоящее время я создаю веб-приложение Maven (с jsp / servlets), которое собирает данные в TripAdvisor, помещает их в базу данных и затем сортирует данные на основе поведения пользователя в прошлом.

Моя проблема начинается, когда мне приходится отправлятьмои ключи от панели поиска tripadvisor.Нет кнопки отправки, поэтому я должен использовать org.openqa.selenium.Keys import.Вот код, который я попробовал:

driver.findElement(By.xpath("//span[contains(@class, 'brand-trip-search-geopill-TripSearchGeoPill__icon--jEoJX')]")).click();

String keyword = request.getParameter("<parameter-inserted-by-user>");
//insert text inside search form
WebElement insert_element = driver.findElement(By.xpath("//input[@class='input-text-input-ManagedTextInput__managedInput--106PS']"));

insert_element.sendKeys(keyword+Keys.ENTER);

Проблема, которая возникает, заключается в том, что когда я запускаю тест, текст вставляется в форму поиска, но когда происходит Keys.ENTER, поиск не фиксируется, ион регистрируется так, как будто я на самом деле написал:

insert_element.sendKeys(Keys.ENTER);

Я шатался по stackoverflow в поисках решения и попробовал следующую альтернативу:

insert_element.sendKeys(keyword + "\n");

безрезультатно.Он регистрирует только команду «Ввод» и, таким образом, предлагает мне поиск моего «близлежащего» местоположения.

Я также видел, что могу использовать javascript, но это выглядит обременительно для такой простой задачи, как отправка запроса поиска.

В настоящее время я использую Chromedriver v.2.44 и Selenium v.3.141.59

Может кто-нибудь мне помочь?Заранее спасибо за ваше время.

1 Ответ

0 голосов
/ 11 декабря 2018

У вас проблема со временем.Selenium печатает очень быстро, затем нажимает клавишу ввода.Выполните действия вручную, и вы увидите небольшую задержку между вводом полученных результатов в зависимости от того, что вы ввели.

У меня есть пример кода, который доказывает вышеизложенное, но я оставляю это на ваше усмотрение.Приведенного выше комментария и вашего кода должно быть достаточно.

--- Edit --- добавление примера кода теперь, когда ОП выяснил его

driver.findElement(By.xpath("//span[contains(@class, 'brand-trip-search-geopill-TripSearchGeoPill__icon--jEoJX')]")).click();

String keyword = request.getParameter("<parameter-inserted-by-user>");
//insert text inside search form
WebElement insert_element = driver.findElement(By.xpath("//input[@class='input-text-input-ManagedTextInput__managedInput--106PS']"));

insert_element.sendKeys(keyword);
Thread.sleep(1000);    //  <-- Not ideal but for a permanent solution, but illustrates this is timing related.
insert_element.sendKeys(Keys.ENTER);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...