Точная настройка селектора в Microsoft Word
Предположим, вы работаете с текстовым редактором. В заголовке окна текстового редактора вы увидите не только его название (MS Word и т.д.), но и через дефис имя текущего документа. Допустим, вы не хотите, чтобы в данном сценарии робот работал только с этим документом и ни с каким другим.
Запустите Word.
![](https://docs.sherparpa.ru/~gitbook/image?url=https%3A%2F%2Fsherparpa.ru%2Fwp-content%2Fuploads%2F2024%2F02%2Fzapustite-word.png&width=768&dpr=4&quality=100&sign=426eb054&sv=1)
В заголовке окна текстового редактора отображается имя текущего документа и через дефис название редактора. Допустим, робот должен найти окно редактора Word, но имя документа не важно.
Попробуйте записать клик по какой-нибудь кнопке в окне Word, например, на кнопке заливки цветом. Нажмите на кнопку для записи последовательности кликов.
![](https://docs.sherparpa.ru/~gitbook/image?url=https%3A%2F%2Fsherparpa.ru%2Fwp-content%2Fuploads%2F2024%2F02%2Fzapis-v-okne-word.png&width=768&dpr=4&quality=100&sign=b723c679&sv=1)
В качестве эксперимента нажмите клавишу Ctrl, а не кликните левой кнопкой мыши. Т.е. действие записалось без фактического клика по кнопке. Нажмите на escape для отмены и на кнопку (Сохранить и закрыть).
В конец текущей диаграммы добавился блок клика мышью:
![](https://docs.sherparpa.ru/~gitbook/image?url=https%3A%2F%2Fsherparpa.ru%2Fwp-content%2Fuploads%2F2024%2F02%2Ftekushhaya-diagramma.png&width=768&dpr=4&quality=100&sign=3897aebb&sv=1)
Посмотрите селектор блока.
![](https://docs.sherparpa.ru/~gitbook/image?url=https%3A%2F%2Fsherparpa.ru%2Fwp-content%2Fuploads%2F2024%2F02%2Fselektor-bloka.png&width=768&dpr=4&quality=100&sign=c186562b&sv=1)
Первой строкой происходит поиск приложения WINWORD. Второй строкой происходит поиск окна с заголовком Document1 – Word, т.е. как раз поиск документа с конкретным названием Document1. Это не входит в условие задачи. Необходимо сделать так, чтобы сценарий работал независимо от того, какой документ открыт. Самое простое, что можно сделать – удалить содержимое этой ячейки и сохранить таблицу селектора в таком виде.
Как правило, других условий, содержащихся в этой строке, достаточно, чтобы робот нашёл нужный элемент управления. В строке остаются такие свойства, как имя класса и тип элемента управления.
Ниже представлены способы проверить, сработает ли робот правильно в таком случае.
Первый вариант: с помощью кнопки Проверить вверху таблицы селектора.
![](https://docs.sherparpa.ru/~gitbook/image?url=https%3A%2F%2Fsherparpa.ru%2Fwp-content%2Fuploads%2F2024%2F02%2Fknopka-proverit.png&width=768&dpr=4&quality=100&sign=304585c8&sv=1)
Кнопка выполняет формальную проверку на соответствие хоть какого-нибудь элемента на экране всему списку команд, которые указаны в селекторе.
Второй вариант: Кнопка Подсветить позволяет более интерактивно и наглядно показать процесс поиска роботом того или иного элемента управления.
Нажмите на кнопку Проверить. Дизайнер сворачивается, но проверка закончилась неудачно.
![](https://docs.sherparpa.ru/~gitbook/image?url=https%3A%2F%2Fsherparpa.ru%2Fwp-content%2Fuploads%2F2024%2F02%2Fproverka-neudachnoe-zavershenie.png&width=768&dpr=4&quality=100&sign=3de93f8&sv=1)
При нажатии на кнопку Подсветить видно, что определилось окно приложения Word, но затем возникла некая ошибка. Ошибку можно найти в логе.
![](https://docs.sherparpa.ru/~gitbook/image?url=https%3A%2F%2Fsherparpa.ru%2Fwp-content%2Fuploads%2F2024%2F02%2Flog-oshibki.png&width=768&dpr=4&quality=100&sign=e96cef5a&sv=1)
Очевидно, проблема возникла на второй строке, в ячейке ClassName со значением MsoDockTop. Этот элемент не найден. Теоретически проблемы быть не должно, однако это не так.
Запишите ещё раз селектор и не редактируйте его. Нажмите на кнопку для записи последовательности кликов. Нажмите на кнопку для заливки цветом. Перейдите в дизайнер и откройте селектор нового блока. Нажмите на кнопку Проверить. Однако даже в исходном виде сценарий не работает. Судя по логу, робот так же останавливается на второй строке.
![](https://docs.sherparpa.ru/~gitbook/image?url=https%3A%2F%2Fsherparpa.ru%2Fwp-content%2Fuploads%2F2024%2F02%2Foshibka-robota-log.png&width=768&dpr=4&quality=100&sign=6fe7f0b2&sv=1)
Иногда бывает такое, что при наводке курсора мыши на панель что-то в свойствах этой панели меняется. Самая популярная проблема при запуске селекторов – у какой-то кнопки или ссылки на сайте меняется имя класса. Когда курсор мыши наведен на элемент, имя класса одно. Когда курсор мыши уходит с элемента, имя класса меняется – так устроена сама страница. Скорее всего, так произошло и в данном случае, когда вы записывали клик на кнопку заливки цветом, наводя на нее курсор.
Рассмотрим, в этом ли проблема и какие действия необходимо предпринять для отладки селектора.
Для начала попробуем ослабьте одно из условий, находящихся в проблемной строке. Пробуйте начать с условия Index. Удалите значение этой ячейки (2), нажмите на кнопку Проверить. Открывается окно с заголовком Document1 – Word, т.е. всё работает правильно. В таблице селектора на кнопке Проверить появляется зелёная галочка. Формальная проверка селектора пройдена.
![](https://docs.sherparpa.ru/~gitbook/image?url=https%3A%2F%2Fsherparpa.ru%2Fwp-content%2Fuploads%2F2024%2F02%2Fformalnaya-proverka-selektora-projdena.png&width=768&dpr=4&quality=100&sign=910d7186&sv=1)
Нажмите кнопку Подсветить. После нажатия на эту кнопку робот пройдет последовательно по всем шагам – строкам селектора и будет каждый раз подсвечивать рамочкой текущий шаг, т.е. тот элемент на экране, на котором он сейчас находится.
![](https://docs.sherparpa.ru/~gitbook/image?url=https%3A%2F%2Fsherparpa.ru%2Fwp-content%2Fuploads%2F2024%2F02%2Fshag-raboty-selektora.png&width=768&dpr=4&quality=100&sign=22ed64be&sv=1)
Сначала робот нашёл и выделил всё окно, затем в окне нашёл панель инструментов и выделил её, потом внутри панели инструментов нашёл и выделил секцию Paragraph и затем в ней нашёл кнопку заливки цветом.
![](https://docs.sherparpa.ru/~gitbook/image?url=https%3A%2F%2Fsherparpa.ru%2Fwp-content%2Fuploads%2F2024%2F02%2Frabota-selektora.png&width=768&dpr=4&quality=100&sign=4bbd118a&sv=1)
Причём робот нашёл эту кнопку по внешнему контуру, т.к. кнопка состоит из двух частей: сама кнопка и стрелка, вызывающая палитру. На последнем шаге робот выделил уже саму кнопку с заливкой.
Таким образом, вы отремонтировали селектор.
Иногда можно просто удалить всю проблемную строку, а не угадывать, какое из условий здесь лишнее. Это будет работать в том случае, если на экране внутри контейнера верхнего уровня больше нет ещё одного экземпляра следующей строки. В данном селекторе под такое условие подходит строка после проблемной:
![](https://docs.sherparpa.ru/~gitbook/image?url=https%3A%2F%2Fsherparpa.ru%2Fwp-content%2Fuploads%2F2024%2F02%2Fproblemnaya-stroka.png&width=768&dpr=4&quality=100&sign=5451261f&sv=1)
Попробуйте удалить проблемную строку.
![](https://docs.sherparpa.ru/~gitbook/image?url=https%3A%2F%2Fsherparpa.ru%2Fwp-content%2Fuploads%2F2024%2F02%2Fudalenie-stroki-v-selekte.png&width=768&dpr=4&quality=100&sign=c935678b&sv=1)
Сохраните селектор, снова в него зайдите и нажмите кнопку Проверить.
Проверка пройдена успешно.
![](https://docs.sherparpa.ru/~gitbook/image?url=https%3A%2F%2Fsherparpa.ru%2Fwp-content%2Fuploads%2F2024%2F02%2Fproverka-projdena.png&width=768&dpr=4&quality=100&sign=519c64ca&sv=1)
Вернитесь к исходному примеру. Необходимо, чтобы селектор был универсальным и работал с любыми документами Word, а не только с Document1.
Удалите в селекторе содержимое этой ячейки и проверьте работу селектора.
![](https://docs.sherparpa.ru/~gitbook/image?url=https%3A%2F%2Fsherparpa.ru%2Fwp-content%2Fuploads%2F2024%2F02%2Fudalenie-soderzhimogo-yachejki.png&width=768&dpr=4&quality=100&sign=f79b61c1&sv=1)
Селектор работает.
Существует другой способ – существует функционал вставки подстановочных символов. Можно вставить знак вопроса, который будет заменять один любой символ, или звёздочку, которая будет заменять несколько любых символов.
![](https://docs.sherparpa.ru/~gitbook/image?url=https%3A%2F%2Fsherparpa.ru%2Fwp-content%2Fuploads%2F2024%2F02%2Fvstavka-znaka-voprosa.png&width=768&dpr=4&quality=100&sign=3b879ebd&sv=1)
Т.е. вы можете записать значение ячейки Name во второй строке как “* — Word”
![](https://docs.sherparpa.ru/~gitbook/image?url=https%3A%2F%2Fsherparpa.ru%2Fwp-content%2Fuploads%2F2024%2F02%2Fznachenie-v-yachejke.png&width=768&dpr=4&quality=100&sign=b66ca11f&sv=1)
Такой приём бывает полезен, если нужно уточнить роботу, с каким из множества однотипных элементов мы имеем дело.
Если вы недовольны результатом, можно перезаписать селектор с помощью кнопки Запись в таблице селектора.
![](https://docs.sherparpa.ru/~gitbook/image?url=https%3A%2F%2Fsherparpa.ru%2Fwp-content%2Fuploads%2F2024%2F02%2Fperezapisat-selektor.png&width=768&dpr=4&quality=100&sign=38976d4&sv=1)
Также можно добавить вручную новую строку с помощью кнопки “Добавить новую строку” и прописать какие-то параметры в сроке селектора автоматически.
![](https://docs.sherparpa.ru/~gitbook/image?url=https%3A%2F%2Fsherparpa.ru%2Fwp-content%2Fuploads%2F2024%2F02%2Fdobavit-novuyu-stroku.png&width=768&dpr=4&quality=100&sign=c24d3c73&sv=1)
Last updated