我在WPF应用程序中有一个简单的消息框,如下所示:
private void Button_Click(object sender, RoutedEventArgs e)
{
MessageBox.Show("Howdy", "Howdy");
}
我可以white点击我的按钮并启动消息框。
UISpy将其显示为我窗口的子项我无法找到访问它的方法。
如何访问MessageBox以验证其内容?
答案 0 :(得分:3)
var app = Application.Launch(@"c:\ApplicationPath.exe");
var window = app.GetWindow("Window1");
var helloButton = window.Get<Button>("Hello");
Assert.IsNotNull(helloButton);
helloButton.Click();
var messageBox = window.MessageBox("Howdy");
Assert.IsNotNull(messageBox);
答案 1 :(得分:3)
请试试这个
Window messageBox = window.MessageBox("");
var label = messageBox.Get<Label>(SearchCriteria.Indexed(0));
Assert.AreEqual("Hello",label.Text);
答案 2 :(得分:1)
包含在White源代码中的是一些UI测试项目(用于测试White本身)。
其中一项测试包括MessageBox测试,其中包括获取显示消息的方法。
[TestFixture, WinFormCategory, WPFCategory]
public class MessageBoxTest : ControlsActionTest
{
[Test]
public void CloseMessageBoxTest()
{
window.Get<Button>("buttonLaunchesMessageBox").Click();
Window messageBox = window.MessageBox("Close Me");
var label = window.Get<Label>("65535");
Assert.AreEqual("Close Me", label.Text);
messageBox.Close();
}
[Test]
public void ClickButtonOnMessageBox()
{
window.Get<Button>("buttonLaunchesMessageBox").Click();
Window messageBox = window.MessageBox("Close Me");
messageBox.Get<Button>(SearchCriteria.ByText("OK")).Click();
}
}
显然,用于显示文本消息的标签由显示消息框的窗口所有,其主要标识是最大字值(65535)。
答案 3 :(得分:1)
window.MessageBox()是一个很好的解决方案!!
但如果消息框不显示,此方法会长时间停留。有时我想检查&#34; 不显示&#34;消息框(警告,错误等)。所以我写了一个通过线程设置timeOut的方法。
gulp.task('test:e2e', function () {
var argv.testProfiles = 'system';
var testProfiles = {
e2e: '/e2e/**/*.js',
system: '/system/**/*.js'
};
gulp.src([resolvedPath]) //where resolvedPath = '/system/**/*.js'
.pipe();
}