如何在应用程序互操作之间切换

时间:2017-04-21 11:19:42

标签: c# interop

我已经进行了多次单元测试,我正在使用Appium来运行它们。在我的TestInitialize中,我创建了一个单词实例。然后我打开另一个Word文档,我需要运行这个特定的测试。然后我打开一个excel doc,因为我需要它的数据。

我正在使用互操作来打开我的Word文档和我的Excel工作簿。我正在使用extern bool SetForegroundWindow(IntPtr hWnd);来设置前景窗口。这当前可以将doc这个词放在前面,但是我试着将我的Workbook带到前面但是这不会发生。

我的代码如下

 static extern bool SetForegroundWindow(IntPtr hWnd);
      [TestMethod]
        public void wordFormatChart()
        {




            var wordApplication = new word.Application();
            var myDocument = wordApplication.Documents.Open(wordColumnChartTemp);
            wordApplication.Visible = true;
            Debug.WriteLine(wordSession.Title.ToString());
            Debug.WriteLine(wordApplication.ActiveWindow);
            Debug.WriteLine(wordSession.CurrentWindowHandle);
            word.Window wordWindow = myDocument.ActiveWindow;

            wordWindow.SetFocus();
            wordWindow.Activate();
            SetForegroundWindow((IntPtr)wordWindow.Hwnd);
            wordSession.FindElementByName("Rectangle").Click();
            Thread.Sleep(4000);

            wordApplication.WindowState= word.WdWindowState.wdWindowStateMinimize;

            Thread.Sleep(4000);
            xl.Application excel = new xl.Application();
            var myWorkbook = excel.Workbooks.Open(columnChartTemp);
            excel.Visible = true;
            Debug.WriteLine(excel.ActiveWindow);

            xl.Window window = excel.ActiveWindow;

            wordWindow.SetFocus();
            wordWindow.Activate();
            SetForegroundWindow((IntPtr)window.Hwnd);


            excel.WindowState = xl.XlWindowState.xlMaximized;
}

0 个答案:

没有答案