t.me/atinfo_chat Telegram группа по автоматизации тестирования

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

java
webdriver
Теги: #<Tag:0x00007f9c4c994f40> #<Tag:0x00007f9c4c994d38>

(Gallagher) #1

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

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

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

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


(Gallagher) #2

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

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


(Vladislav Sobol) #3

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


(Gallagher) #4

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


(Vladislav Sobol) #5
        element.sendKeys(Keys.ARROW_DOWN , Keys.RETURN);

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


(Сергей Слётов) #6

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

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


(Gallagher) #7

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


(Сергей Слётов) #8

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

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

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

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


(Gallagher) #9

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


(Сергей Слётов) #10

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

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

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

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

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


(Gallagher) #11

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


(Сергей Слётов) #12

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

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

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

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


(Gallagher) #13

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

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);
    }

(Gallagher) #14

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


(Сергей Слётов) #15

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


(Gallagher) #16

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


(Максим) #17

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

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

(Максим) #18

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

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;
}


(Gallagher) #19

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