Pull to refresh

Comments 10

Пытался использовать, но пришлось бросить: задача была

DragFileFromExplorerToBrowser(string fileName)
{
    var explorerWindow = OpenExplorerInFolder(defaultFolder); // запускаем explorer.exe и открываем нужную нам папку
    var chromeWindow = OpenChrome(testPageAddress);          // запускаем хром на странице с тестом
    AllignWindows();                                        // чтобы окна не перекрывали друг друга и не были закрыты другими окнами
    var fileToDrag = explorerWindow.FindFileInFilelist(fileName); // получаем элемент файла который мы будем перетаскивать
    var dropZone = chromeWindow.getContentCenter();       // получаем центр тестовой страницы
    DragAndDrop(fileToDrag, dropZone)                    // перетаскиваем файл в центр страницы
}


и вот буквально на каждом из трёх последних шагов было по проблеме.
Приходилось ли вам решать схожие задачи?
Как решали?
Буквально пару раз сталкивались с задачей автоматизации подобного кросс-продуктового сценария, но затрат получалось куда больше, чем полезности и мы не брались за это :)
explorer.exe можно автоматизировать с помощью pywinauto. Вот здесь пример, как в Control Panel залезть через explorer.exe. Есть пример на drag-n-drop, правда, для tree view, но можно и под list view переделать.

Размеры окон выставить — ноу проблем. А вот с хромом пока что сложности: в нём «контролы» не нативные, а поддержка UIA в pywinauto пока ещё в проекте. Собственно, в окно хрома кинуть файл — легко. А вот вбить нужный URL в табу хрома придётся другими средствами. Равно как и проверять изменения странички.
Спасибо, посмотрю в его сторону.
На самом деле, два года назад такой сценарий было невозможно написать с помощью pywinauto (так что я вас зря тогда обнадежил), а осенью 2016-го стало возможно. Вот пример, написанный моим студентом. С Хромом вскрылся ряд моментов, в частности ключ, с которым его нужно запускать, чтобы он рендерил страницы с поддержкой UI Automation.

Ну, и для полноты есть подобный хоть и неидеальный пример на Cruciatus на C# (думаю, можно существенно улучшить, просто руки не дошли).
Прошло 2 года и когда меня спросили «что в вашей работе было самым сложным?» — я назвал этот кейс. Конечно тогда у меня ничего не получилось, да и задача понемногу потеряла актуальность.
Но спасибо, что через столько времени помните обо мне :)
Подскажите, проект жив? Судя по репозиторию, 2 года релизов не было. Если уже поддержки нет, то посоветуйте на какие инструменты смотреть?
Жив в текущем состоянии :) его пользуют, периодически вопросы задают. Но постоянная поддержка и развитие приостановилось, так как разработчики переключились на другое направление (в том числе я).

Из годных топ-12 вот отсюда: https://github.com/pywinauto/pywinauto/wiki/UI-Automation-tools-ratings Из них pyautogui, sikuli и lackey работают фактически только с картинками, autopy — вообще только с голой мышкой и клавиатурой. Остальные в той или иной степени с текстовыми свойствами элементов (как правило, на одной оси). Из быстрорастущих тулов под C# можно отметить молодой проект FlaUI, автор которого занимался поддержкой TestStack.White, но плюнул и решил сделать с нуля.

Ну, и под инфраструктуру Selenium есть майкрософтовский WinAppDriver. Они нас внезапно опередили с релизом UI Recorder'а — они пока единственные с такой фичей в опен сорсе (правда, я ещё не пробовал, но полагаю, что он тоже на текстовых свойствах, иначе смысла нет).

Sign up to leave a comment.