网页视觉自动化测试技巧

在进行网页测试时,确保重要页面上的样式一致性至关重要。本文将介绍如何使用测试框架来断言页面的各个部分,如字体大小、字体族、元素位置等。将通过一系列示例代码,展示如何提取HTML属性、使用注解器、进行视觉捕获、验证HTML样式以及进行图像比较等技巧。

提取HTML属性

为了验证网页状态,需要能够提取不同HTML元素的属性。可以通过Attributes集合访问这些属性,并使用LINQ查询来选择它们。需要添加System.Linq的using语句。

using System.Linq; [TestMethod] public void ExtractIndividualHtmlAttribute() { manager.ActiveBrowser.NavigateTo( "http://automatetheplanet.com/healthy-diet-menu-generator/" ); HtmlImage healthyBurgerImage = manager.ActiveBrowser.Find.ByXPath( "/html/body/div[1]/div[3]/section/article/div/div[2]/a/img" ); string altAttributeValue = healthyBurgerImage.Attributes .Single(x => x.Name == "alt").Value; Debug.WriteLine(altAttributeValue); }

以上代码展示了如何通过LINQ查询提取特定HTML元素的属性值。

使用注解器

注解器可以在浏览器窗口中显示测试框架正在执行的操作,并突出显示它正在操作的UI元素。这对于视频记录测试执行或捕获测试失败状态的页面非常有用。

[TestMethod] public void PlayWithAnnotator() { manager.ActiveBrowser.NavigateTo( "http://automatetheplanet.com/healthy-diet-menu-generator/" ); HtmlImage healthyBurgerImage = manager.ActiveBrowser.Find.ByXPath( "/html/body/div[1]/div[3]/section/article/div/div[2]/a/img" ); HtmlInputCheckBox additionalSugarCheckbox = manager.ActiveBrowser.Find.ById( "ninja_forms_field_18" ); additionalSugarCheckbox.Check( isChecked: true, invokeOnChange: true, invokeOnClickChanged: true ); Annotator annotator = new Annotator(manager.ActiveBrowser); annotator.Annotate( healthyBurgerImage.GetRectangle(), "This is the most healthy meal EVER! Honestly!" ); }

通过上述代码,展示了如何添加自定义消息并标记重要元素。

视觉捕获

可以通过窗口的GetBitmap方法生成浏览器可见部分的位图图像。该方法有一个重载版本,接受一个元素并仅捕获该元素。可以使用Bitmap类的Save方法将图像保存到磁盘。需要引用System.Drawing。

[TestMethod] public void VisualCapturing() { manager.ActiveBrowser.NavigateTo( "http://automatetheplanet.com/healthy-diet-menu-generator/" ); HtmlDiv mainArticleDiv = manager.ActiveBrowser.Find.ByXPath( "/html/body/div[1]/div[3]/section/article/div" ); System.Drawing.Bitmap browserImage = manager.ActiveBrowser.Window.GetBitmap(); System.Drawing.Bitmap divimage = manager.ActiveBrowser.Window.GetBitmap(mainArticleDiv.GetRectangle()); string browserImagePath = Path.Combine( AppDomain.CurrentDomain.BaseDirectory, string.Concat(Guid.NewGuid().ToString(), ".bmp") ); browserImage.Save(browserImagePath); string mainDivImagePath = Path.Combine( AppDomain.CurrentDomain.BaseDirectory, string.Concat(Guid.NewGuid().ToString(), ".bmp") ); divimage.Save(mainDivImagePath); }

以上代码展示了如何捕获浏览器的可视部分以及特定元素的图像,并将其保存到磁盘。

验证HTML样式

通过AssertStyle方法,可以验证视觉元素的各种属性,如字体大小、背景颜色、字体样式或字体族。对于大型公司来说,视觉品牌至关重要,作为测试自动化工程师,应该确保至少在最相关的页面上进行断言。

[TestMethod] public void VerifyHtmlStyles() { manager.ActiveBrowser.NavigateTo( "http://automatetheplanet.com/healthy-diet-menu-generator/" ); HtmlImage healthyBurgerImage = manager.ActiveBrowser.Find.ByXPath( "/html/body/div[1]/div[3]/section/article/div/div[2]/a/img" ); HtmlControl mainHeadline = manager.ActiveBrowser.Find.ByXPath( "/html/body/div[1]/div[2]/div/h1" ); mainHeadline.AssertStyle().Font( HtmlStyleFont.Family, "Lato,sans-serif", HtmlStyleType.Computed, StringCompareType.Exact ); mainHeadline.AssertStyle().Font( HtmlStyleFont.Size, "33px", HtmlStyleType.Computed, StringCompareType.Exact ); mainHeadline.AssertStyle().ColorAndBackground( HtmlStyleColorAndBackground.Color, "#000000", HtmlStyleType.Computed, StringCompareType.Exact ); mainHeadline.AssertStyle().ColorAndBackground( HtmlStyleColorAndBackground.BackgroundColor, "#FFFFFF", HtmlStyleType.Computed, StringCompareType.Exact ); }

以上代码展示了如何验证HTML元素的样式属性。

可以使用测试框架的PixelMap类来比较图像。可以通过Image静态类将预期图像加载为Bitmap。Compare PixelMap的方法接受第二个参数——容差百分比。

[TestMethod] public void ImageComparison() { manager.ActiveBrowser.NavigateTo( "http://automatetheplanet.com/healthy-diet-menu-generator/" ); HtmlDiv mainArticleDiv = manager.ActiveBrowser.Find.ByXPath( "/html/body/div[1]/div[3]/section/article/div" ); System.Drawing.Bitmap divimage = manager.ActiveBrowser.Window.GetBitmap(mainArticleDiv.GetRectangle()); Bitmap expectedbmp = (Bitmap)Image.FromFile( "mainArticleDivExpected.bmp", true ); PixelMap expected = PixelMap.FromBitmap(expectedbmp); PixelMap actual = PixelMap.FromBitmap(divimage); Assert.IsTrue(expected.Compare(actual, 5.0)); }
沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485