Разместите свой проект бесплатно и начните получать предложения от фрилансеров-исполнителей уже спустя минуты после публикации!
3000 ₽

Доработка C# утилиты для тестирования приложений (WPF)

проект завершен
C#


Есть готовая утилита для тестирования приложений, написанная на основе опенсорсного FlaUI (аналог Selenium для Windows). Среда - Visual Studio 2015/2017, язык C#, WPF-приложение. Нужно внести серию изменений и дополнений в эту утилиту, каждый подпроект оцениваю примерно в 3000 руб, всего их будет около пяти. ТЗ и оплата по каждому этапу отдельно. Почти по каждому из этапов есть готовый пример кода, который реализует похожую задачу почти полностью.

От исполнителя нужно понимание UIAutomation / OleAutomation, опыт работы с системами тестирования типа FlaUI или Selenium, навыки быстрого ориентирования в чужом коде.

В ответе пишите про свой опыт в аналогичных задачах, в личку дам ссылку на приложение и описание первой из задач.

Отзыв заказчика об исполнителе Максиме Луневе

Качество
Профессионализм
Стоимость
Контактность
Сроки

Качественное выполнение задачи в установленные сроки. Хороший исполнитель, рекомендую! Будем продолжать сотрудничество.

Константин А. Константин Артемьев | Сейф Сейф

Отзыв фрилансера о заказчике Константине Артемьеве

Оплата
Постановка задачи
Четкость требований
Контактность

Очень ответственный и исполнительный заказчик. Отлично понимает какой результат он хочет получить от сотрудничества. Всегда на связи. Рекомендую

Максим Л. Максим Лунев | Сейф Сейф



  1. 5 дней15000 ₽
    Марья Йота
     441   20  0   1

    Здравствуйте!
    Работаю в основном с Селениум. FlaUI знакомо.
    Дайте ТЗ и исходники. Сделаю.

    Россия Санкт-Петербург | 18 мая в 02:21 |
  2. 5 дней3000 ₽Победившая ставка
    Максим Лунев
     200   2  1

    Добрый день. Готов выполнить. Богатый опыт разработки на WPF, skype:lunevmaxim, email:[email protected]

    Россия Россия | 19 мая в 23:59 |
  • Интересное задание, честно признаюсь, с автоматизацией не работал, но хотел бы попробовать.

  • Константин Артемьев — заказчик проекта

    Вадим, давайте попробуем. 


    Есть такой опенсорсный продукт для автоматизации тестирования Windows-приложений - 

    https://github.com/Roemer/FlaUI


    Если вы работали с Selenium, что понимаете, что это такое и зачем нужно.

    Также к нему есть опенсорсная утилита для интерактивного указания элементов управления в чужих окнах, записи кликов и т.д. - с составлением программы для автоматизации для основного приложения FlauUI на C# или PowerShell (с вызовом функций из библиотек FlauUI), вот ссылка:

    https://github.com/twenzel/FlaUIRecorder


    Мы на базе этого комплекта делаем инструмент по автоматизации рутинных задач для собственных нужд, в том числе для автоматизации тестирования, но не только. В составе комплекта FlaUI есть также утилита FlaUI Inspect, которая функционально и по интерфейсу похожа на утилиты UISpy и Inspect.exe от Microsoft.

    https://github.com/FlauTech/FlaUInspect

    Однако с этим пакетом программ есть несколько задач по доработке, которые я вам предлагаю решить. 


    Первая задача следующая. С Windows-программами FlaUIRecorder и FlaUInspect работают хорошо, но вот с веб-страницами в Internet Explorer всё довольно плохо. Если вы попытаетесь получить с помощью FlaUIRecorder или FlaUInspect какой-то дескриптор, скажем, куска текста или какой-нибудь кнопки или ссылки веб-страницы, то программа вернет запись свойств UIAutomation, в которой бОльшая часть полей будут пустыми. Да, каждому блоку текста, кнопки или ссылке будет присвоен имя класса ил Automation ID, только это бесполезная информация, потому что после повторного захода на страницу они меняются. Для экранной читалки этого функционала достаточно, но вот для инструмента автоматизации, который должен открыть браузер, зайти на сайт, найти нужный абзац текста или нужную ссылку, и скопировать текст или кликнуть по ссылке - этого явно не хватает.


    Есть коммерческая программа UIPath, которая работает с Internet Explorer ровно так как нам нужно. Она при клике на любой элемент управления или любой текстовый блок веб-страницы выдаёт не только свойства UIAutomation этого контрола, но и HTML и CSS свойства, ассоциированные с контролом, по которым очень легко потом найти нужный элемент управления. Средствами только UIAutomation это сделать невозможно.  Мы немного исследовали её технологии, и оказалось, что работа с веб-страницей начинается так же, как в FlaUI Recorder или FlaUI Inspect - то есть через UIAutomation. Но вот когда нужный элемент на странице найден и подсвечен, они используют OLE Automation, чтобы получить из него нужные свойства HTML и CSS, строят XPath до этого элемента, а потом во время воспроизведения скрипта ищут его по этому XPath.


    Мы предположили, что это работает так. Средствами UIAutomation мы подсвечиваем нужную ссылку и нужный текст на экране и получаем её координаты относительно окна браузера - это FlaUI делать умеет сейчас. Далее каким-то образом (через инжект и выполнение в браузере кода на JavaScript или каким-то другим методом OLEAutomation) по этим координатам они получают из InternetExplorer нужный DOM-объект, со всеми его свойствами. Дальше понятно. Во время воспроизведения, они наоборот, находят на странице DOM-объект по захваченным в момент записи сценария свойствам или кликают на него уже средствами или UIAutomation (по нужным координатам экрана), или может быть методы самого OLE Automation используют.


    Мы поискали, как можно реализовать что-то подобное, нашли вот эти примеры:

    https://stackoverflow.com/questions/50282437/using-ui-automation-to-read-internet-explorer-dom-from-a-panewindow

    https://stackoverflow.com/questions/39534365/accessing-javascript-variables-with-ole-automation

    http://francois-piette.blogspot.com/2013/01/internet-explorer-automation-part-2.html

    http://francois-piette.blogspot.com/2013/01/internet-explorer-automation-part-1.html

    https://www.codeproject.com/Tips/525426/Web-Automation


    Я уверен, что в этих пяти ссылках содержится готовое или почти готовое решение задачи. Осталось только проверить это решение и интегрировать его в код FlaUI Inspect и FlaUI Recorder.


    Вот последний абзац - это и есть то, что нужно сделать. Это задача как раз из тех, где, если найти правильное и изящное решение, это решение будет гораздо короче чем описание самой задачи.


    Дайте знать, если готовы взяться.


  • Задание интересное, но беспокоит один нюанс, что свободен буду только с понедельника. До него постараюсь "пощупать" 2 выше описанных приложения и сказать окончательный вариант. 

  • Константин Артемьев — заказчик проекта

    Вадим, договорились, жду от вас ответ в понедельник.