我試圖使用編碼的用戶界面測試來控制一個Web應用程序(我沒有soruce代碼)爲我的應用程序生成輸入數據(填寫表格等) 。編碼UI測試與網頁瀏覽器彈出
在某個時間點,網絡應用程序會打開一個新窗口,然後在這個新的瀏覽器窗口中繼續填充過程。麻煩的是,我似乎無法讓UI測試代碼「移動」或發現新窗口已打開。它搜索舊窗口中的下一個項目,因此找不到它。
有沒有辦法將焦點移動到新打開的瀏覽器窗口?
使用VS 2010,IE9
我試圖使用編碼的用戶界面測試來控制一個Web應用程序(我沒有soruce代碼)爲我的應用程序生成輸入數據(填寫表格等) 。編碼UI測試與網頁瀏覽器彈出
在某個時間點,網絡應用程序會打開一個新窗口,然後在這個新的瀏覽器窗口中繼續填充過程。麻煩的是,我似乎無法讓UI測試代碼「移動」或發現新窗口已打開。它搜索舊窗口中的下一個項目,因此找不到它。
有沒有辦法將焦點移動到新打開的瀏覽器窗口?
使用VS 2010,IE9
您可以爲您搜索的控件指定父級。 所以,你需要:
1)保持打開的IE窗口的軌道(您可以通過標題找到他們,HWND等)
2)這些窗口存儲爲一對夫婦BrowserWindow
變量。
3)搜索所有這樣的控件:
HtmlHyperLink hl = new HtmlHyperLink(window2);
// rest of specification
4)你會得到你的控件的窗口,你需要
如果你用錄音機您將需要一些改變你的測試(我們因爲記錄器產生低質量的代碼,所以從頭開始寫出測試和UIMaps)。
這個答覆可能是晚了一點,但我已經取得了一些成功如下方法:
通過與CodedUI硒PluralSight課程的啓發,我創建了一個類中調用瀏覽器設有一個公共的,靜態實例的BrowserWindow
對象。在那個類中,我有一個Initialize()方法,它將靜態BrowserWindow實例賦值爲BrowserWindow.Launch("yourUrlHere")
。當我點擊一個在新窗口中打開的鏈接,並且必須將焦點切換到新窗口時,我只需重新分配我的靜態BrowserWindow對象的值爲BrowserWindow.Locate("windowTitleGoesHere")
。現在,如果我必須使用瀏覽器窗口作爲搜索上下文搜索頁面上的元素,我總是會有正確的瀏覽器窗口。當窗口關閉時,我只需使用BrowserWindow.Locate(「windowTitleGoesHere」)方法將我的靜態BrowserWindow對象重新分配回主窗口。
HTH
小心解釋downvote? –