Драматург – введите или заполните не так, как ожидалось

Я автоматизирую пользовательский интерфейс, используя PlayWright и Java. У меня есть окно поиска в iFrame. Когда я ввожу в него текст, я получаю подсказку: Найдите <number_entered> по. Однако, когда я ввожу номер с помощью .fill() или .type() PlayWright, пользовательский интерфейс не идентифицирует введенный текст и отображает сообщение: Найдите «» по (см. снимок экрана ниже), подразумевая, что пользовательский интерфейс считает, что текст не введен.

Когда я ввожу тот же текст вручную, он работает нормально. Пользовательский интерфейс идентифицирует введенный текст.

Код:

Browser browser = playwright.chromium().launch(new BrowserType.LaunchOptions().setHeadless(false).setHandleSIGINT(false));
Page page = browser.newPage();
FrameLocator frame = page.frameLocator("#iFrameID");
Locator searchBox = frame.locator("#searchBox");
searchBox.click();
searchBox.fill ("454545487");
Locator searchIcon = frame.locator(".searchContainer");
searchIcon.click()

Java != JavaScript. Поделитесь, пожалуйста, минимально воспроизводимым примером, включая автоматизируемый сайт.

ggorlen 02.07.2024 01:22

Какой там пользовательский интерфейс? Можете ли вы попробовать размыть и сфокусировать элемент, чтобы увидеть, нужно ли ему обновить определенное событие? Возможно, отправьте onchange или oninput после fill().

Phix 02.07.2024 04:16
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
2
102
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Попробуйте использовать:

await searchBox.pressSequentially('454545487')

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

Я попробовал .press() и . pressSequentially() оба. Однако введенные данные по-прежнему не идентифицируются пользовательским интерфейсом. Благодаря Selenium пользовательский интерфейс может идентифицировать введенные данные.

Zeus 02.07.2024 16:37

Используете ли вы селектор «#searchBox» в селене?

hardkoded 03.07.2024 15:01

Ответ Вишала помог решить проблему. Судя по всему, проблема заключалась в том, что PlayWright очень быстро печатал для моего приложения. Замедление его с помощью приведенного ниже кода помогло: searchBox.pressSequentially('454545487', new Locator.PressSequentiallyOptions().setDelay(400));

Zeus 09.07.2024 03:01

Другие вопросы по теме