测试UI /设置焦点在TextBox上

时间:2014-03-17 14:13:05

标签: c# wpf ui-automation

我在测试TextBox的值时遇到问题。首先,我向您展示测试用例的代码:

[TestCase]
public void trage_kilogramm_ein()
{
    var windowPeer = new FrameworkElementAutomationPeer(this.zieleTest);
    var liste = windowPeer.GetChildren();
    var boxPeer = (TextBoxAutomationPeer)liste[34];
    boxPeer.VerifyAccess();
    var buttonPeer = (ButtonAutomationPeer)liste[9];
    var button = (Button)buttonPeer.Owner;
    var box = (TextBox)boxPeer.Owner;
    box.Visibility = Visibility.Visible;
    box.VerifyAccess();
    box.Focus();
    testWindow.Dispatcher.BeginInvoke(DispatcherPriority.Input, new Action    (boxPeer.SetFocus));
    var args = new RoutedEventArgs(Button.ClickEvent, button);
    button.RaiseEvent(args);
    Assert.AreEqual("8", ((IValueProvider)boxPeer).Value);
}

我有一个带有10个文本框的窗口,您可以在其中放入值。我还有10个按钮,用于从0到9的数字,它们只发送特定数字的关键事件。在代码中,我模拟数字/按钮" 8"的点击事件。我的问题是我不能把焦点放在TextBox上。我的测试总是失败,因为" TextBox.Text"仍然是#34; String.Empty"并没有得到价值" 8"。

感谢。

//编辑: 好的,现在我得到了关注。似乎我需要把重点放在父母身上。 我写了两个方法来看看我是否得到了KeyboardFocus。

private void Gewicht_obere_OnPreviewGotKeyboardFocus(object sender, KeyboardFocusChangedEventArgs e)
{
    Console.WriteLine("Got Focus");
}

private void Gewicht_obere_OnLostKeyboardFocus(object sender, KeyboardFocusChangedEventArgs e)
{
    Console.WriteLine("Focus Lost");
}

问题是现在我得到了焦点,但我立即失去了它。

1 个答案:

答案 0 :(得分:0)

获取特定控件的引用(在本例中为TextBox)。

Dispatcher.BeginInvoke((ThreadStart)delegate
            {
                control.Focus();
            });