我可以在一个项目中同时使用WhiteUI和FlaUI吗?
public TestStack.White.Application app = null;
public TestStack.White.UIItems.WindowItems.Window=null;
var processStartInfo = new ProcessStartInfo(@"winword.exe");
var application = Application.Launch(processStartInfo);
app=Application.Attach("winword");
FlaUI.Core.Application fpp = (FlaUI.Core.Application)app;
TestStack.White.UIItems.WindowItems.Window window = app.GetWindow("Microsoft Word");
FlaUI.Core.AutomationElements.Window fwin = (FlaUI.Core.AutomationElements.Window) Window;无法将测试堆栈的窗口和应用程序强制转换为FlaUI。
发布于 2018-08-20 02:17:06
您需要从白色控件中获取基础AutomationElement,然后使用该AutomationElement创建FlaUI控件。这意味着您将仅限于使用UIAv2,因为怀特没有UIAv3实现。
怀特中的每个UIItem都公开了一个AutomationElement属性,您可以在该属性中获取底层UIAv2包装器。然后,您应该能够使用来自怀特的AutomationElement作为第二个参数来构造FlaUI UIA2FrameworkAutomationElement。然后将UIA2FrameworkAutomationElement从FlaUI传递到FlaUI的ComboBox。因此,它将看起来像下面这样。
var processStartInfo = new ProcessStartInfo(@"winword.exe");
var application = Application.Launch(processStartInfo);
TestStack.White.Application app = Application.Attach("winword");
TestStack.White.UIItems.WindowItems.Window window = app.GetWindow("Microsoft Word");
TestStack.White.UIItems.ListBoxItems.ComboBox whiteCombox = window.Get<ComboBox>(SearchCriteria.ByAutomationId("MyComboBox"));
var flaUiAutomationElment = new FlaUI.UIA2.UIA2FrameworkAutomationElement(new UIA2Automation(), whiteCombox.AutomationElement);
var flaUiComboBox = new FlaUI.Core.AutomationElements.ComboBox(flaUiAutomationElment);如果可能的话,我建议所有的事情都用FlaUI来做。
https://stackoverflow.com/questions/51880948
复制相似问题