自动化测试框架的高级技巧

自动化测试工程师在进行Web应用测试时,需要掌握如何正确使用自动化测试框架。其中,处理不同浏览器在各种情况下的行为是一个重要部分。本文将分享一些框架的高级特性,帮助测试工程师更高效地进行自动化测试。

浏览器自动化技巧

1. 处理登录对话框

通常,自动化处理登录对话框并不简单。但通过使用自动化测试框架,只需要通过AddDialog方法将LogonDialog实例添加到DialogMonitor中。在LogonDialog的构造函数中指定确切的用户名和密码,然后导航到需要保护的页面即可。此外,需要添加一个using语句来引用ArtOfTest.WebAii.Win32.Dialogs。

[Test] public void LogonDialog() { // 添加引用到ArtOfTest.WebAii.Win32.Dialogs manager.DialogMonitor.AddDialog( new LogonDialog(manager.ActiveBrowser, "", "", DialogButton.OK)); manager.DialogMonitor.Start(); // 导航到需要登录的页面 manager.ActiveBrowser.NavigateTo( ""); }

2. 拦截HTTP代理 - 拦截原始HTTP流量

测试框架包括ArtOfTest.WebAii.Messaging.Http命名空间。使用它,可以在后台拦截原始HTTP流量。通过HTTP代理,可以在浏览器发送到Web服务器之前拦截HTTP请求,或者在浏览器渲染之前拦截来自Web服务器的HTTP响应。

[TestInitialize] public void TestInitialize() { Settings mySettings = new Settings(); mySettings.Web.DefaultBrowser = BrowserType.FireFox; mySettings.Web.UseHttpProxy = true; manager = new Manager(mySettings); manager.Settings.Web.RecycleBrowser = true; manager.Settings.Web.KillBrowserProcessOnClose = true; manager.Settings.AnnotateExecution = true; manager.Start(); manager.LaunchNewBrowser(); }

3. 浏览器历史

在处理网站的Cookie之前,需要导航到它的一些页面。使用当前活动浏览器的Cookies属性。ActiveBrowser属性具有方便的方法,可以前进和后退。此外,可以刷新页面。可以通过PageTitle属性获取当前页面的标题。

[Test] public void BrowserHistory() { manager.ActiveBrowser.NavigateTo( "http://automatetheplanet.com/healthy-diet-menu-generator/"); manager.ActiveBrowser.Refresh(); Assert.AreEqual( "Healthy Diet Menu Generator - Automate The Planet", manager.ActiveBrowser.PageTitle); manager.ActiveBrowser.NavigateTo( "http://automatetheplanet.com/"); manager.ActiveBrowser.GoBack(); Assert.AreEqual( "Healthy Diet Menu Generator - Automate The Planet", manager.ActiveBrowser.PageTitle); manager.ActiveBrowser.GoForward(); Assert.AreEqual( "Automate The Planet", manager.ActiveBrowser.PageTitle); }

4. 管理Cookie

设置新Cookie:

var newCookie = new System.Net.Cookie( "AutomateThePlanet", "Rocks", "/", "http://automatetheplanet.com"); manager.ActiveBrowser.Cookies.SetCookie(newCookie);

获取所有Cookie:

System.Net.CookieCollection siteCookies = manager.ActiveBrowser.Cookies.GetCookies( "http://automatetheplanet.com");

删除Cookie:

manager.ActiveBrowser.Cookies.DeleteCookie(newCookie);

清除所有Cookie:

foreach (System.Net.Cookie cookie in siteCookies) { manager.ActiveBrowser.Cookies.DeleteCookie(cookie); }

5. 滚动到可见

使用测试框架滚动到可见是一个简单的操作。只需要调用找到的元素的ScrollToVisible方法。有两个选项 - 元素在屏幕顶部可见或底部可见。

[Test] public void ScrollToVisible() { manager.ActiveBrowser.NavigateTo( "http://automatetheplanet.com/healthy-diet-menu-generator/"); HtmlInputRadioButton coffeeRadioButton = manager.ActiveBrowser.Find.ByExpression( "value=^1 x Trenta"); coffeeRadioButton.ScrollToVisible(ScrollToVisibleType.ElementTopAtWindowTop); }

6. 多浏览器实例支持

可以创建任意数量的浏览器实例。不确定经常这样做是否是最好的实践,但在某些罕见的情况下,可能需要这样做。一旦得到了浏览器实例,可以设置焦点并执行与所有其他实例不同的操作。可以通过LaunchNewBrowser方法启动新的浏览器实例,可以指定浏览器的类型。通过Manager的Browsers集合,可以访问所有活动实例。

[Test] public void MultiBrowserInstanceSuppprt() { Browser firefox = manager.ActiveBrowser; manager.ActiveBrowser.NavigateTo( "http://automatetheplanet.com/healthy-diet-menu-generator/"); manager.LaunchNewBrowser(BrowserType.InternetExplorer, true); Browser internetExplorer = manager.ActiveBrowser; internetExplorer.NavigateTo( "http://automatetheplanet.com/healthy-diet-menu-generator/"); HtmlInputRadioButton coffeeRadioButton = firefox.Find.ByExpression( "value=^1 x Trenta"); coffeeRadioButton.ScrollToVisible(ScrollToVisibleType.ElementTopAtWindowTop); Browser firefox2 = manager.Browsers[0]; firefox2.Window.SetFocus(); internetExplorer.Window.SetFocus(); firefox.Close(40); }

7. 下载文件

[Test] public void DownloadFiles() { string fileToDownload = System.IO.Path.Combine( AppDomain.CurrentDomain.BaseDirectory, @"myw3schoolsimage.jpg"); if (File.Exists(fileToDownload)) { File.Delete(fileToDownload); } manager.ActiveBrowser.NavigateTo( "http://www.w3schools.com/tags/tryit.asp?filename=tryhtml5_a_download"); Browser myFrame = manager.ActiveBrowser.Frames.ById( "iframeResult"); HtmlImage image = myFrame.Find.AllByTagName( "img")[0]; image.Download( false, DownloadOption.Save, fileToDownload, 50000); }
沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485