У меня есть приложение, написанное с помощью Visual Studio 2012 professional в C ++ MFC. В настоящее время я хочу создать несколько сценариев автоматизации с использованием инфраструктуры TestStack.White, написанной на C #.
Я не могу контролировать список и редактировать контроль.
Я использую шпион ++. Элемент управления для редактирования вложен в групповой блок, и я не могу проверить идентификатор автоматизации.
Пример моего кода
var psi = new ProcessStartInfo(ExeSourceFile);
application = Application.AttachOrLaunch(psi);
mainWindow = application.GetWindow(SearchCriteria.ByText(applicationName), InitializeOption.NoCache);
Где ExeSourceFile — это путь к приложению.
Это способ, которым я пытался. Где IDC_Edit — это идентификатор дизайнера.
TextBox TextObj = mainWindow.Get<TextBox> (SearchCriteria.ByAutomationId("IDC_Edit"));
Я пытался получить элементы управления MFC по идентификатору, но это не удалось. Должен ли я использовать инструмент, отличный от Spy ++ или другого фреймворка?
Редактировать:
Я пытался с идентификатором «1221», а также «0x1221», но безуспешно.
Я использовал мастер MFC для создания визуально выглядящего студийного приложения и добавил элемент управления редактирования в окно свойств, чтобы я мог протестировать элемент управления редактирования. Я не смог добавить групповое поле, потому что CGroupBox не существует из того, что я мог сказать. Если бы вы могли предоставить некоторый код для того, как реализован групповой блок, я мог бы добавить это к своему ответу.
После всего этого я надеюсь ответить на некоторые ваши вопросы.
Вот консольное приложение, которое я написал на C # для автоматизации «Списка» и «Редактирования».
using System;
using TestStack.White;
using TestStack.White.UIItems;
using TestStack.White.UIItems.Finders;
using TestStack.White.UIItems.ListBoxItems;
namespace ConsoleApplication1
{
public class Program
{
public static void Main(string[] args)
{
var application = Application.Attach("MFCApplication1");
var window = application.GetWindow("MFCApplication11 - MFCApplication1");
//Edit Control
var propertyPane = window.Get<Panel>(SearchCriteria.ByAutomationId("150"));
var edit = propertyPane.Get<TextBox>(SearchCriteria.ByAutomationId("1"));
//Type this text into the edit control
edit.Text = "Hello World";
//List View
var output = window.Get<Panel>(SearchCriteria.ByAutomationId("149"));
var list = output.Get<ListBox>(SearchCriteria.ByAutomationId("2"));
//Output the count of how many rows exist
Console.Out.WriteLine(list.Items.Count);
//Select the second row
list.Items[1].Select();
}
}
}
Вот изображение приложения, которое я протестировал с автоматически выделенными элементами управления.
Других решений пока нет …