Selenium自動化測試如何處理 popup視窗?

Selenium自動化測試如何處理 popup視窗?

這篇文章主要探討自動化測試過程中,如何處理popup視窗?

Popup視窗又分為,檔案儲存、檔案上傳、登入驗證、新視窗、Alert等,

這些都是測試過程中的一些常見的popup視窗,也是導致自動化測試失敗的主要原因之一,

這篇文章舉幾種常見的popup的視窗類型與情況,並且用簡單的範例程式說明如何處理這些popup視窗。

IE存檔視窗

enter image description here

原則上Selenium無法處理類似這樣的視窗。特別是針對IE。

因此,通常這樣的視窗我們可以處理的是在瀏覽器啟動前做一些設定,讓存檔相關的視窗不要出現。

要如何設定不要出現這樣的存檔詢問視窗呢? 舉FireFox為例,設定如下:

Firefox Tools > Options > Applications

enter image description here

也可以在Selenium程式啟動的時候做這樣的設定,範例如下:

[pastacode lang=”java” message=”Selenium Download Configuration” highlight=”” provider=”manual”]

FirefoxProfile profile = new FirefoxProfile();

String path = "C:\\Download_Folder\\";
profile.setPreference("browser.download.folderList", 2);
profile.setPreference("browser.download.dir", path);
profile.setPreference("browser.download.manager.alertOnEXEOpen", false);
profile.setPreference("browser.helperApps.neverAsk.saveToDisk", "application/msword, application/csv, application/ris, text/csv, image/png, application/pdf, text/html, text/plain, application/zip, application/x-zip, application/x-zip-compressed, application/download, application/octet-stream");
profile.setPreference("browser.download.manager.showWhenStarting", false);
profile.setPreference("browser.download.manager.focusWhenStarting", false);  
profile.setPreference("browser.download.useDownloadDir", true);
profile.setPreference("browser.helperApps.alwaysAsk.force", false);
profile.setPreference("browser.download.manager.alertOnEXEOpen", false);
profile.setPreference("browser.download.manager.closeWhenDone", true);
profile.setPreference("browser.download.manager.showAlertOnComplete", false);
profile.setPreference("browser.download.manager.useWindow", false);
profile.setPreference("services.sync.prefs.sync.browser.download.manager.showWhenStarting", false);
profile.setPreference("pdfjs.disabled", true);

driver = new FirefoxDriver(profile);

[/pastacode]

 

Http/Windows Authentication

這樣的帳號驗證視窗也不是 Selenium可以控制的範圍,因此也必須要瀏覽器啟動的時候就做好相關的設定。

如果是 IE 與Chrome 的設定,範例如下:

Internet Options > Security,將該網站的Security level設定為 Local intranet or trusted site

Security Settings 中,Automatic logon with current user name and password

List item

FireFox如何處理這樣的Windows Authenticaion呢?

方法一:安裝一個FireFox AutoAuth plugin

https://addons.mozilla.org/en-US/firefox/addon/autoauth/

方法二:透過Selenium設定FireFox profile

[pastacode lang=”java” message=”” highlight=”” provider=”manual”]

profile.SetPreference("network.automatic-ntlm-auth.trusted-uris", "google.com");
driver = new FirefoxDriver(profile);

driver.Navigate().GoToUrl("http://user:pwd@google.com");

[/pastacode]

方法三:直接設定FireFox設定

在瀏覽器網址列輸入about:config

network.automatic-ntlm-auth.trusted-uris =”測試的網站”

signon.autologin.proxy = “true”

FireFox AutoLogin

新視窗

這類的視窗是因為 JavaScript 中的 newWindow所產生,這樣的視窗就是 Selenium程式可以處理。

處理的方式可參考文章範例:http://www.qa-knowhow.com/?p=1843

JavaScript Alert

這樣的視窗也是 Selenium可以處理的。

處理的方式可以參考http://www.qa-knowhow.com/?p=1819

檔案上傳

比較簡單的方式是直接使用  sendKeys

//element is a WebElement of the upload button e.g.

WebElement element = driver.findElement(By.id("upload_btn"))
element.sendKeys("C:\\pathToFile\\fileToUpload.jpg");
element.sendKeys(Keys.ENTER);
.sendKeys(Keys.ENTER); 另外一個方式就是使用 AutoIT,這是另外一個自動化測試工具,用來自動化測試Window的視窗。 但是用這樣的工具,也會間接限制該自動化設僅能執行於Windows環境。

Leave a Reply

Your email address will not be published. Required fields are marked *