Точная настройка селектора в Microsoft Word
Last updated
Last updated
Предположим, вы работаете с текстовым редактором. В заголовке окна текстового редактора вы увидите не только его название (MS Word и т.д.), но и через дефис имя текущего документа. Допустим, вы не хотите, чтобы в данном сценарии робот работал только с этим документом и ни с каким другим.
Запустите Word.
В заголовке окна текстового редактора отображается имя текущего документа и через дефис название редактора. Допустим, робот должен найти окно редактора Word, но имя документа не важно.
Попробуйте записать клик по какой-нибудь кнопке в окне Word, например, на кнопке заливки цветом. Нажмите на кнопку для записи последовательности кликов.
В конец текущей диаграммы добавился блок клика мышью:
Посмотрите селектор блока.
Первой строкой происходит поиск приложения WINWORD. Второй строкой происходит поиск окна с заголовком Document1 – Word, т.е. как раз поиск документа с конкретным названием Document1. Это не входит в условие задачи. Необходимо сделать так, чтобы сценарий работал независимо от того, какой документ открыт. Самое простое, что можно сделать – удалить содержимое этой ячейки и сохранить таблицу селектора в таком виде.
Как правило, других условий, содержащихся в этой строке, достаточно, чтобы робот нашёл нужный элемент управления. В строке остаются такие свойства, как имя класса и тип элемента управления.
Ниже представлены способы проверить, сработает ли робот правильно в таком случае.
Первый вариант: с помощью кнопки Проверить вверху таблицы селектора.
Кнопка выполняет формальную проверку на соответствие хоть какого-нибудь элемента на экране всему списку команд, которые указаны в селекторе.
Второй вариант: Кнопка Подсветить позволяет более интерактивно и наглядно показать процесс поиска роботом того или иного элемента управления.
Нажмите на кнопку Проверить. Дизайнер сворачивается, но проверка закончилась неудачно.
При нажатии на кнопку Подсветить видно, что определилось окно приложения Word, но затем возникла некая ошибка. Ошибку можно найти в логе.
Очевидно, проблема возникла на второй строке, в ячейке ClassName со значением MsoDockTop. Этот элемент не найден. Теоретически проблемы быть не должно, однако это не так.
Запишите ещё раз селектор и не редактируйте его. Нажмите на кнопку для записи последовательности кликов. Нажмите на кнопку для заливки цветом. Перейдите в дизайнер и откройте селектор нового блока. Нажмите на кнопку Проверить. Однако даже в исходном виде сценарий не работает. Судя по логу, робот так же останавливается на второй строке.
Иногда бывает такое, что при наводке курсора мыши на панель что-то в свойствах этой панели меняется. Самая популярная проблема при запуске селекторов – у какой-то кнопки или ссылки на сайте меняется имя класса. Когда курсор мыши наведен на элемент, имя класса одно. Когда курсор мыши уходит с элемента, имя класса меняется – так устроена сама страница. Скорее всего, так произошло и в данном случае, когда вы записывали клик на кнопку заливки цветом, наводя на нее курсор.
Рассмотрим, в этом ли проблема и какие действия необходимо предпринять для отладки селектора.
Для начала попробуем ослабьте одно из условий, находящихся в проблемной строке. Пробуйте начать с условия Index. Удалите значение этой ячейки (2), нажмите на кнопку Проверить. Открывается окно с заголовком Document1 – Word, т.е. всё работает правильно. В таблице селектора на кнопке Проверить появляется зелёная галочка. Формальная проверка селектора пройдена.
Нажмите кнопку Подсветить. После нажатия на эту кнопку робот пройдет последовательно по всем шагам – строкам селектора и будет каждый раз подсвечивать рамочкой текущий шаг, т.е. тот элемент на экране, на котором он сейчас находится.
Сначала робот нашёл и выделил всё окно, затем в окне нашёл панель инструментов и выделил её, потом внутри панели инструментов нашёл и выделил секцию Paragraph и затем в ней нашёл кнопку заливки цветом.
Причём робот нашёл эту кнопку по внешнему контуру, т.к. кнопка состоит из двух частей: сама кнопка и стрелка, вызывающая палитру. На последнем шаге робот выделил уже саму кнопку с заливкой.
Таким образом, вы отремонтировали селектор.
Иногда можно просто удалить всю проблемную строку, а не угадывать, какое из условий здесь лишнее. Это будет работать в том случае, если на экране внутри контейнера верхнего уровня больше нет ещё одного экземпляра следующей строки. В данном селекторе под такое условие подходит строка после проблемной:
Попробуйте удалить проблемную строку.
Сохраните селектор, снова в него зайдите и нажмите кнопку Проверить.
Проверка пройдена успешно.
Вернитесь к исходному примеру. Необходимо, чтобы селектор был универсальным и работал с любыми документами Word, а не только с Document1.
Удалите в селекторе содержимое этой ячейки и проверьте работу селектора.
Селектор работает.
Существует другой способ – существует функционал вставки подстановочных символов. Можно вставить знак вопроса, который будет заменять один любой символ, или звёздочку, которая будет заменять несколько любых символов.
Т.е. вы можете записать значение ячейки Name во второй строке как “* — Word”
Такой приём бывает полезен, если нужно уточнить роботу, с каким из множества однотипных элементов мы имеем дело.
Если вы недовольны результатом, можно перезаписать селектор с помощью кнопки Запись в таблице селектора.
Также можно добавить вручную новую строку с помощью кнопки “Добавить новую строку” и прописать какие-то параметры в сроке селектора автоматически.
В качестве эксперимента нажмите клавишу Ctrl, а не кликните левой кнопкой мыши. Т.е. действие записалось без фактического клика по кнопке. Нажмите на escape для отмены и на кнопку (Сохранить и закрыть).