Katalon WebUI.SetMaskedText () произвольно переносит текст - PullRequest
0 голосов
/ 04 декабря 2018

У меня есть поле во всплывающем окне для ввода номера телефона с замаскированным текстом: "(_ _ _) _ _ _ - _ _ _ _".

(замаскированный текст означает, что мы используем jquery для автоматического форматирования вводимого текста. Подробнее можно узнать здесь .) Подчеркивание, приведенное выше, просто для представления пробелов для цифрномер телефона.:)

Результаты

Код произвольно переносит текст при вводе.Я попытался использовать строку как «8015558245» и замаскировать как «(801) 555-8245», причем обе случайным образом переносятся с результатами:

  • (015) 558-2458
  • (155) 582-4580
  • (555) 824-5801

Единственное предложение, которое я обнаружил во время многочисленных поисков в интернете, - сначала дважды щелкнуть элемент, который не влияет на результаты .Каждый раз, когда я запускаю тест в режиме инкогнито.Иногда он работает, в остальное время он не работает.

Код

Вот мой код:

TestObject enterPhoneNumber = findTestObject('path/PhoneNumberObject')
WebUI.doubleClick(enterPhoneNumber)
WebUI.setMaskedText(enterPhoneNumber, '8015558245')

Спецификации

Я использую Katalonv5.9.1, но он не работал и в более ранних версиях.

Chrome - это браузер.

Ответы [ 3 ]

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

Я думаю, это может произойти, потому что WebUI.doubleClick() нацелен на середину элемента, поэтому он начинает печатать где-то за ().

Возможно, попробуйте использовать WebUI.clickOffset(enterPhoneNumber,x,y) с небольшим значением x и y (например, 5 px - рассчитано по верхнему левому углу элемента), поэтому вы уверены, что щелчок попадет где-то рядом с первым (_ _ _цифра.

Другой вариант использует

WebUI.click(enterPhoneNumber)
WebUI.sendKeys(enterPhoneNumber, Keys.chord(Keys.HOME))
WebUI.setMaskedText(enterPhoneNumber, '8015558245')

с

import org.openqa.selenium.Keys

импортированным.

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

Ответом была комбинация вещей:

Первое: Мне нужно было установить курсор слева от маскированного текста прямо в открывающей скобке.Чтобы гарантировать это, я использовал предложенный clickOffset (enterPhoneNumber, 40, 5).[Спасибо @Matt Mrse за ваше предложение!]

Это не исправило перенос текста при использовании WebUI.setMaskedText (..), но позволило обеспечить надежную работу следующей части, а именно:

Секунда: Текст, введенный в поле вручную, всегда вводился правильно.Поэтому вместо WebUI.setMaskedText (..) я просто отправил всю строку, как если бы она была набрана с помощью WebUI.sendKeys (..).

Окончательный код, который работал надежно (все другие предыдущие попыткине удалось в течение 1-2 попыток) после пяти запусков теста в пяти различных тестах это:

    WebUI.clickOffset(enterPhoneNumber, 40, 5)
    WebUI.sendKeys(enterPhoneNumber, '8015558245')
    WebUI.delay(1) //For humans to be able to see that text was entered correctly

Вот и все!

Надеюсь, что это поможет кому-то еще с этой проблемой!

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

Я думаю, вам нужно дважды проверить: - автоматически ли добавляются () при вводе номера телефона?- setMaskText () используется для ввода текста как «**************»

Я не уверен, правильно ли я понимаю случай.Обычно я рассматриваю этот случай с помощью ключевого слова sendKeys, которое будет демострировать действие при наборе текста, чтобы формат телефона мог быть добавлен правильно.

...