我对执行Visual Studio编码的UI测试时遇到的问题感到疯狂。 方案如下。 我记录了一个编码的UI测试,它在Web应用程序(Microsoft Dynamics CRM 2011)中执行以下步骤:
测试能够毫无问题地完成所有这些步骤,甚至可以选择组合框中的值。 Web应用程序有一个Javascript,在所选项目更改时执行。 如果选择了其中一个值,则会向用户显示一条警告消息,应用程序会将所选项目设置为默认值!
javascript代码如下所示:
switch (Xrm.Page.getAttribute("status").getValue()) {
case 3: //Authorised
alert("Please use the method XPTO to update the record status to Authorised!");
Xrm.Page.getAttribute("status").setValue(1);
Xrm.Page.getControl("tatus").setFocus(true);
return false;
在组合框中执行更改的UI测试方法如下:
/// <summary>
/// Select a value in the Status dropdown box
/// </summary>
public void SelectStatus()
{
#region Variable Declarations
HtmlComboBox uIStatusComboBox = this.UIHttpsappWindow200.UIModuleUITEDocument5.UIWorkplaceDashboardsFrame.UIModuleUITEDocument.UIStatusComboBox;
// Select 'Authorised' in 'Status' combo box
uIStatusComboBox.SelectedItem = this.SelectStatus_SPParams.UIStatusComboBoxSelectedItem;
}
测试方法能够更改组合框中的值,并向用户显示警告消息。但是,代码uIStatusComboBox.SelectedItem = this.SelectStatus_SPParams.UIStatusComboBoxSelectedItem;
的这部分永远不会返回,测试只会挂起,直到它超时!
我没有想到如何解决这个问题!我在想,也许问题可能在于我们在向用户显示警报后执行了javascript代码。我更改了JS,以便警报消息是最后显示的内容,但它也没有帮助!
我还注意到,如果我在警告信息上单击“确定”,那么测试通过!
如果我选择其他不触发任何JS的值,那么测试也会通过!
有没有人对这个问题有任何想法?
编辑1:
我注意到另一件事,我可以使用BrowserWindow对象将JS脚本发送到浏览器。如果我尝试创建警报消息,则呼叫也会被阻止,直到我在警报上单击“确定”按钮!
BrowserWindow bw = BrowserWindow.Locate("My window");
bw.ExecuteScript("alert('This is just a simple alert.');");
在我单击“确定”按钮之前,ExecuteScript语句也会被阻止! 这看起来非常奇怪!
答案 0 :(得分:0)
我相信我找到了一个解决方法。 我在谷歌搜索找到任何可以帮助我解决这个问题的东西,我最终在StackOverflow上发现了这个问题Coded ui test - Select an item from a combobox without using mouse coordinates
我尝试在Dropdown中选择相同的项目,而不使用HtmlComboBox元素的“SelectedItem”属性。 我尝试使用键盘在下拉框中选择元素,首先我单击Dropdown然后我使用向下键和Enter键选择我想要的元素:
public void SelectStatus_SP(string SelectedItem)
{
#region Variable Declarations
HtmlComboBox uIStatusComboBox = this.UIHttpsappWindow200.UIpopupUITEDocument5.UIWorkplaceDashboardsFrame.UIpopupUITEDocument.UIStatusComboBox;
#endregion
Mouse.Click(uIStatusComboBox);
Keyboard.SendKeys(uIStatusComboBox, "{Down}{Down}{Enter}", ModifierKeys.None);
}
在我的情况下,我想要选择的元素是第3个,所以我向下按2次然后在我想要选择的元素上按Enter键。
这种解决方法不太好,因为如果元素改变位置,我会选择一个!但这是我获得测试的唯一方法,而不是在那部分存货!
我想知道是否有人有类似的问题。因为对我而言,这似乎是Coded UI测试引擎中的一个错误,它不会在警报未关闭的情况下为测试提供任何场景!