我正在开发一个自动化测试应用程序来测试一个 Web 应用程序。在这里,我无法找到由 Web 应用程序代码动态创建的控件。它们的属性不断变化。
示例:某些控件在第一次执行时不会出现,但会在下次执行时出现。Web 应用程序还将创建一个 XML 文件来存储网页中所有控件的信息。
我正在开发一个自动化测试应用程序来测试一个 Web 应用程序。在这里,我无法找到由 Web 应用程序代码动态创建的控件。它们的属性不断变化。
示例:某些控件在第一次执行时不会出现,但会在下次执行时出现。Web 应用程序还将创建一个 XML 文件来存储网页中所有控件的信息。
我也很久以前在 CodedUI 中遇到过这个问题,我通过编辑控件的属性解决了这个问题。我建议你,
(1) 转到要定位的动态控件的属性,
(2) 你会发现propertyName, PropertyExpressionOperator & PropertyValue。
*(example : propertyName = id,
PropertyExpressionOperator = equals,
PropertyValue = button12)*
(3) 现在将PropertyExpressionOperator (即equals )改为“contains”,并去掉PropertyValue中不断变化的值(即button12 -> button)
(4) 所以属性看起来像
*(example : propertyName = id,
PropertyExpressionOperator = contains,
PropertyValue = button)*
(5) 现在您可以找到它了。
相信它可以帮助你。
屠宏。
我使用了可以做到这一点的CUITe(编码 UI 测试增强框架) 。
例如,变更集21564 在 Sample_CUITeTestProject\BrowserWindowTests.cs 中有一个示例单元测试,如下所示:
[TestMethod]
[WorkItem(608)]
public void GenericGet_WithHtmlControls_GetsControlsDynamically()
{
//Arrange
CUITe_BrowserWindow bWin = CUITe_BrowserWindow.Launch("http://mail.google.com", "Gmail: Email from Google");
//Act
bWin.Get<CUITe_HtmlEdit>("Id=Email").SetText("xyz@gmail.com");
bWin.Get<CUITe_HtmlPassword>("Id=Password").SetText("MyPa$$Word");
bWin.Get<CUITe_HtmlInputButton>("Id=signIn").Click();
bWin.Close();
}