2014-09-04 1 views
0

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

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

ответ

0

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

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

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

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