我正在使用Microsoft Coded UI 2012来自动化基于Web的应用程序。我为此目的使用Selenium WebDriver dll。我的要求如下: 1.启动Firefox。 2.启动Microsoft Word。 3.在Microsoft Word中输入一些值。 4.切换回Firefox。 (这是失败的地方) 5.在Firefox中执行某些操作。
请在下方找到以下代码的摘要:
Driver driverObj = new Driver();
driverObj.InitiateDriver(); //creates a new Firefox driver
String strWindowHandle = driverObj.driver.WindowHandles.ToString(); //getting the windows handle of the firefox browser
this.UIMap.RecordedMethod3(); //recorded method to interact with Microsoft Word
driverObj.driver.WindowHandles.IndexOf(strWindowHandle);//switches the handle back to Firefox
driverObj.GoogleSearch();//performs operation on firefox
this.UIMap.RecordedMethod4();//Recorded method to close Microsoft word.
现在我面临的问题是:启动Microsoft字时,它不会切换回Firefox窗口。但是,在更改窗口句柄后,firefox窗口上的操作将在后台执行。我想通过切换到Firefox窗口来显示在前台执行的操作。编码的UI未能这样做。但是,测试在所有操作都已执行时通过。
答案 0 :(得分:0)
如果句柄有效,您可以使用SetForegroundWindow激活firefox窗口并将其置于顶部:
[DllImport("user32.dll")]
static extern bool SetForegroundWindow(IntPtr hWnd);
答案 1 :(得分:0)
由于通常编码将焦点设置在他正在操作的控件上 - 尝试在要显示的firefox窗口上使用SetFocus()方法,或者用鼠标单击它 - 因为这个操作不能在隐藏窗口上执行。 / p>