Ranorex v5.0 не нажимает кнопку время от времени

У меня есть проект ranorex, который автоматизировал сценарий использования с помощью нажатия 5 кнопок в приложении. Для настройки этого проекта я использовал функцию записи. Я определил время сна между щелчками. Прогон с щелчками находится в цикле, где количество циклов определяется динамически. Одна кнопка из пяти и всегда одна и та же, Ranorex иногда "игнорирует". Согласно файлу журнала, кнопка видна и активирована, и ranorex также запускает код с помощью Click(), но приложение не получает щелчок. Перед тем, как в коде вызывается щелчок, я проверяю с помощью "Если", видна ли кнопка и включена ли она - и если вызывается щелчок () (или нет), я регистрирую ее в ranorexlog. Иногда приложение запускается, и все щелчки работают, а иногда это нажатие кнопки отсутствует один или несколько раз. Это не зависит от времени сна между щелчками, потому что я пробовал длинные и маленькие паузы. Это также не зависит от фокуса приложения, потому что я переключал фокус несколько раз.

Кто-нибудь знает эту проблему, обходные пути или что я делаю не так?

1 ответ

Очевидный обходной путь - использовать Mouse.Click("{Button}") с продолжительностью 0, а не вызывать событие click, или, если вы вызываете щелчок мыши, вызывайте действие click кнопок. (извините, так как они оба названы Click(), я не знаю, какой вы используете).

Что касается того, что происходит, из вашего описания кажется, что ваш скрипт находит более одного элемента с одинаковым xpath. Это может вызвать проблемы с событием click, потому что он может попытаться щелкнуть элемент, но это первый xpath, который не соответствует второму. Есть ли какие-либо дополнительные элементы в этой последовательности нажатий кнопок, которые появляются? например, занятый счетчик с внутренним текстом "OK", который скрыт от просмотра, когда вы нажимаете кнопку на форме с внутренним текстом "OK", приведет к тому, что будут найдены два элемента, если xpath ищет внутренний текст Хорошо. Этот вызывающий элемент, возможно, не был пойман в записывающем устройстве, потому что он, возможно, не присутствовал в то время.

Другая возможность, если вы используете Mouse.Click() (особенно, если это веб-сайт), возможно, что ваша кнопка на самом деле не отображается на экране, я знаю, что об этом должна позаботиться видимая проверка, но она видна на Дом, даже если он не виден на экране, что вызывает проблемы.

Я настоятельно рекомендую не использовать рекордер для создания тестовых наборов, которые необходимо повторно запускать. На самом деле было бы лучше использовать инструмент шпиона для создания репозитория или нескольких репозиториев для продукта, который вы тестируете, таким образом, вы можете быть уверены, что все пути xpath уникальны, что при использовании рекордера не дает гарантии. На самом деле вы можете выполнять запись в созданном репозитории, и ranorex будет пытаться найти элемент в репозитории перед созданием нового элемента, поэтому рекордер будет использовать этот репозиторий при создании записей.

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