Работа с клавиатурой. Как нажать кнопку вниз?

В общем задача следующая:

  • найти поле
  • нажать кнопку HOME
  • ввести номер телефона
    Я вот что делаю
public void sendPhoneNumber(String sendId, String sendKey){

        WebElement element = driver.findElement(By.id(sendId));
        element.sendKeys(Keys.HOME, sendKey);

Не работает! Хотя тут именно

Эта вроде работает, не работает теперь вот эта штука
Надо ввести текст и кликнуть по подсказке.

WebElement element = driver.findElement(By.id(sendId));
        element.clear();
        element.sendKeys(sendKey);
        element.sendKeys(Keys.ARROW_DOWN);
        element.click();

Тоже не работает

WebElement element = driver.findElement(By.id(sendId));
        element.clear();
        element.sendKeys(sendKey);
        element.sendKeys(Keys.ARROW_DOWN , Keys.RETURN);

%D0%91%D0%B5%D0%B7%D1%8B%D0%BC%D1%8F%D0%BD%D0%BD%D1%8B%D0%B9

Есть ли у “подсказки” ID ?
Попробуйте, нфйти этот элемент и сделать клик по нему.

Если бы у него был id я бы по нему кликнул …

        element.sendKeys(Keys.ARROW_DOWN , Keys.RETURN);

Что бы срабло это, нужно Keys.RETURN делать для именно “подсказки”, а в вашем случае получается вы делаете это для инпута. Поропбуйте приатачить код страницы где появляется подсказка, вохможно подскажут как взять локатор. Если нет айди то есть какойто другой локатор

При открытом режиме разработчика Chrome сделайте так, что бы эта выпадающая подсказка с адресом появилась и нажмите F8 - это остановит выполнение JS.
Так у вас получится найти этот элемент в структуре страницы и построить для него xPath

Главное перед кликом по ней, выставьте ожидание, что она появилась.

1 лайк

Спасибо за совет … Но где я тут теперь икспас найду?

Перейдите на вкладку “Elements” - увидите код Html

жмёте Ctrl+Shift+C и кликаете на искомый элемент вашей страницы, и в режиме разработчика увидите код нужного вам элемента.

про построение xPath - гуглите, инфы куча

Для теста xPath в режиме разраба жмёте ctrl+f - внизу вылезет строчка “Find by string, selector or XPath”, в эту строчку и вводите свой xPath

1 лайк

Не видно … элемент пропадает при нажатии клавиш Ctrl+Shift+C

Вот полная последовательность:

  1. Жмёте f12 - режим разработчика

  2. Перейдите на вкладку “Elements” - увидите код Html

  3. Нажмите теперь на ваше поле, начните заполнение - что бы появилась ваша подсказка
    А ПОТОМ сразу нажмите F8 - это остановит выполнение JS - явный признак этого - тело сайта как бы приняло серый цвет, посерело, и сверху появилась иконка “Paused in debugger”

  4. жмёте Ctrl+Shift+C и кликаете на искомый элемент вашей страницы, и в режиме разработчика увидите код нужного вам элемента.

Я не совсем деревянный ))) Но при нажатии элемент пропадает (

При нажатии F8 или Ctrl+Shift+C?

если Ctrl+Shift+C - попробуйте не так, а на кнопку
%D0%A1%D0%BD%D0%B8%D0%BC%D0%BE%D0%BA
и потом на искомый элемент

Если при F8 - попробуйте несколько раз и побыстрее :grinning: иногда работает

Если не получится никак - используйте класс Robot
В гугле вбейте “Java Robot” - примеров куча

Спасибо! В общем я достучался до этого элемента проще чем думал в конечном итоге

public void firstStreet(){
        //WebElement element = wait.until(ExpectedConditions.visibilityOfElementLocated(By.id(Id)));

        wait.until(ExpectedConditions.visibilityOfElementLocated(By.cssSelector("div.suggestions-suggestion"))).click();


        // задаем дату, выбираем из списка первый в класс day и не класс disabled
        //List<WebElement> element = driver.findElements(By.className("span.suggestions-value"));
        //element.get(0);
    }

Я туда вообще полез потому что у меня по какой то странной причине тест простой (с одним набором элементов) отрабатывал отлично, а когда я через DDT запускал массив данных, то слетали все заказы на вводе адреса. Ну сейчас норма все, отработало. Можно домой со спокойной душой ))

1 лайк

В итоге то пригодилось все что было написано?
Или сами выкрутились?

Конечно пригодилось … Я раньше открывал консоль через ctrl+shift+I
А теперь узнал как использовать с пользой f12 и f8 (это реально полезная штука) … вот только на ноуте они не работают как оказалось, а только на компе )))
Плюс поработал с управлением клавиатурой, чего я раньше не делал.
Но в конечном итоге просто через cssSelector достучался до элемента )))

1 лайк

Привет, я сталкнулся с такой проблемой. Я сделал так…

  1. ввожу смволы
  2. Беру рут элмент выпадающего списка и загоняю его в лист.
  3. foreach пробегаю по листу и ищу то что мне нужно. результат ложу в переменную
  4. res.Click()

Я работаю на С#

public IWebElement dropDownWork(IWebElement dropDown, string name, string tagName)
{
var list = dropDown.FindElements(By.TagName(tagName));
foreach (var item in list)
{
if (item.Text == name)
return item;
}
return null;
}

Привет!
Я сторонник использования методов драйвера, там где они есть … мне кажется примерно тоже самое делает
List<WebElement>
Но это не точно ))