自动化测试工程师在进行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);
}