Есть отличная удаленная работа для php+codeception+jenkins+allure+docker спецов. 100% remote! Присоединиться к проекту

Не получается реализовать поиск по нескольким категориям(с автокомплитом)


(vlogvinov) #1

Здравствуйте!
Может кто-то сталкивался с автоматизацией поиска по нескольким рубрикам с автокомплитом. Пример такого поиска - http://rabota.ua/. Как ввести одну рубрику - разобрался. А вот с 2 и более не могу разобраться. Инструментарий - java + selenium webdriver. Может кто-то подскажет идею / реализацию?

Заранее спасибо


(Дмитрий Жарий) #2

Здравствуйте @vlogvinov,

Более подробное описание чего вы хотите получить, скриншоты с аннотациями, обозначение цели действий могут значительно ускорить получение ответа
(я лично ничего не понял и разбираться не стал)


(Dmitry Cheremushkin) #3

Или, будьте добры, напишите свой код на поиск 1 рубрики - даст лучшее понимание задачи на примере.


(vlogvinov) #4

метод поиска по одному критерию

 public void searchBySomeSections(SearchQuery searchQuery) {
        WebElement searchInput = driver.findElement(By.xpath("//input[@id='centerZone_vacSearch_Keyword']"));
        searchInput.sendKeys(searchQuery.sectionFirst);
        WebElement autocomplete = wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//ul[@id='ui-id-1']")));
        WebElement needed = getItemsFromAutocomplite();
        needed.click();
        searchInput.sendKeys(searchQuery.sectionSecond);
        autocomplete = wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//ul[@id='ui-id-1']")));
        needed = getItemsFromAutocomplite();
        needed.click();

        submitSearch();

    }

метод клика на кнопку "Найти вакансии"

    private void submitSearch() {
        driver.findElement(By.xpath("//div[@class='rua-g-right']/a")).click();
    }

метод для получения всех рубрик автокомплита

    private WebElement getItemsFromAutocomplite() {
        List<WebElement> itemList = driver.findElements(By.xpath("//ul[@id='ui-id-1']/li"));

        WebElement result = null;
        for (WebElement item : itemList) {

            String itemTitle = item.findElement(By.xpath("./a")).getText();

            if (itemTitle.equals("QA Engineer")) {
                result = item;
                break;
            }
        }
        return result;
    }

(vmaximv) #5

Было бы хорошо, если бы вы написали, что именно вызывает у вас затруднения.
А так - и цель понятна, и код есть, а что именно надо - непонятно.

Передать в метод неизвестное кол-во параметров?

public void search(String... searchQuery){
  for(String s:searchQuery){
    ...
  }
}

(vlogvinov) #6

да.
мне может понадобиться вводить от 1 до 5 параметров. Как это сделать я не знаю. Вот в этом и есть проблема


(Александр Таранков) #7

Решение этой проблемы @vmaximv и предложил: в Java можно передать в метод произвольное число однотипных параметров, используя синтаксис многоточия <Type>... variable.

А ещё есть “дедовский способ”, который называется “перегрузкой метода”


(5am) #8

а еще, List / Array :slight_smile: