2

Что я пробовал:Coded UI + Windows Phone 8.1 - получить размер экрана и ориентацию?

Windows.Graphics.Display.DisplayInformation WinRT API - GetForCurrentView бросками говоря «GetForCurrentView должен быть вызван в потоке, который связан с CoreWindow», выглядит как CodedUI тесты выполняются в процессе без окон.

GetSystemMetrics WinAPI - возвращает правильные значения размера, однако экран не поворачивается.

EnumDisplaySettingsEx WinAPI - не заполняет никаких значений.

DisplayProperties API WinRT - как текущая ориентация, так и NativeOrientation - это всегда портрет.

Любые другие идеи?

Заранее спасибо.

+0

делает CoreApplication.GetCurrentView(). CoreWindow.Bounds работает (напрямую или CoreApplication.GetCurrentView(). Dispatcher.RunAsync)? – fex

+0

CoreApplication.GetCurrentView() throws «Элемент не найден» HResult is 0x80070490 – Soonts

ответ

0

CODEDUI Тесты действительно выполняются в отдельном процессе. Он использует очень специфическую форму «отражения» для поиска элементов управления в «других» процессах. Базовым классом контрольных элементов codedUI является UITestControl

Система ОС Windows по дизайну предотвращает прерывание или отслеживание других процессов в процессе происходящего. Таким образом, MSFT пришлось придумать абстракцию тестируемого процесса, чтобы вы могли «видеть» эти другие элементы управления. Полученная вами адресата - это не фактический контроль, а представление этого элемента управления в другом процессе. Вы можете управлять им, потому что MSTest имеет возможность «отправлять сообщения этому элементу управления». Вы ограничены тем фактом, что вы можете только «Получить» информацию о другом процессе через то, что вы находите в классах в этом пространстве имен: Microsoft.VisualStudio.TestTools.UITesting

Хорошим примером этого является тестирование WebBrowsers, CODEDUI использует класс с именем BrowserWindow, который совсем не похож на классы WebBrowser, найденные в другом месте. Единственный способ, которым я могу попасть в DOM в CODEDUI, - это свойство BrowserWindow.Document. Затем мне нужно сделать какое-то причудливое кастинг, чтобы получить то, что я хочу. Я подозреваю, что это то, что вам нужно делать.

  1. Определите, какой класс CodedUI будет представлять Окно, которое вы автоматизируете.
  2. Ищите методы или свойства этого класса, которые позволят вам указать, что вам нужно.
  3. Если вы не можете найти то, что вам нужно, у вас останется только один вариант, который должен опуститься на уровень обмена сообщениями ОС и посмотреть, не можете ли вы (из процесса) отправлять и получать сообщения. Это сложная и сложная тема, которой я никогда не был успешным. Примечание: Большая часть материала сделано на этом уровне делается в C++, так что действительно помогает знать C++ и как Windows, использует это (API), ...

Может что-нибудь еще делать?

Да, команда QA должна быть в состоянии установить несколько требований/крючков для них с командой разработчиков. Первое, что нужно спросить: «Должен ли Ед. Тест сделать это?» CODEDUI НЕ является истинным Функциональный тест, независимо от того, что кто-то учит, он просто нигде не близок к Unit Testing при проверке функции.

Во-вторых, вы можете попросить команду разработчиков поместить крючки в свой код, чтобы вы могли «добраться до этих вещей». Другими словами, код теперь должен содержать материал для QA Team для проверки. В вашем случае вы можете попросить разработчиков ввести метод для вас, который вызывает GetForCurrentView и передает результаты обратно.Но поскольку CodedUI является визуальным и не работает, вам придется работать с ними, чтобы выяснить, как показывать результаты на уровне графического интерфейса пользователя.

Что-нибудь еще?

Да, последнее, что вы можете использовать подделки для перехвата вызовов методов. Если они подведут ваш крючок, вы можете вызвать его и перехватить результаты вызова метода ... Но эй, разве это не похоже на модульное тестирование?

+0

Я работаю над инструментом автоматизации коммерческих тестов для платформы Windows Phone 8.1. Я не в команде QA, и у меня нет команды разработчиков, мне нужно автоматизировать любые бинарные файлы, которые мои клиенты хотят проверить. На телефоне Windows нет слоя сообщений Windows. Графический интерфейс не построен поверх Win32 (например, для всей системы имеется только один HDC, а user32.dll экспортирует только 40 функций по сравнению с ~ 2400 на рабочем столе Win 8.1). – Soonts

+0

Ouch ... удачи вам, и, пожалуйста, отправьте сообщение, если вы можете понять это, поскольку я не знаю, как это сделать ... –

+0

«На Windows Phone нет слоя сообщений Windows» На самом деле есть уровень обмена сообщениями, но вы правы, это не Win32, он называется чем-то другим. Концепции те же. На C++ у них есть слой с именем IPC, который вы можете захотеть изучить в этом ... поскольку вы попадаете в блок-ход Inter-Process. –

Смежные вопросы