UIAutomation - TransformPattern.Resize и Move заставляют окно исчезнуть

Когда я вызываю TransformPattern.Resize или TransformPattern.Move, окно исчезает. Я все еще могу взаимодействовать с AutomationElement окна, но больше не вижу его на экране. Элемент AutomationElement также отражает сделанные изменения.

Когда я использую Inspect, те же значения ширины/высоты/x/y изменяются/перемещаются нормально (т.е. окно не исчезает).

Мой код:

TransformPattern pattern = (TransformPattern)element.GetCurrentPattern(TransformPattern.Pattern);
if (pattern.Current.CanResize)
{
    pattern.Resize(700, 700);  
}

(исходный размер окна (792, 800))

Что я делаю неправильно?


person M_Tee    schedule 13.12.2016    source источник


Ответы (1)


Наша команда столкнулась с той же проблемой при реализации методов шаблона преобразования в окнах.

Мне не удалось найти каких-либо задокументированных ошибок, подробно описывающих эту проблему на стороне Microsoft.

Два возможных обходных пути.

1) Вы можете использовать P/Invoke и SetWindowPos, чтобы подделать его, но получить те же результаты.

2) Используйте вызовы P/Invoke, чтобы вернуть окно в фокус через SetForegroundWindow и ShowWindow.

Ни один из этих вариантов не является оптимальным, но они решили проблему для нас и позволили потребителям перемещать и изменять размер окон с помощью некоторых оболочек вокруг вызовов P/Invoke.

Также стоит отметить, что разработчики TestStack.White (с которыми я не связан) столкнулись с той же проблемой: https://github.com/TestStack/White/issues/205

Надеюсь это поможет!

person Jordan    schedule 21.02.2017