1

今日は .NET UI オートメーション フレームワークについて学習しています。ということで、これまでやってきたこと(いろいろな記事を参考に)

  1. Listbox、PictureBox、TextBox、および Button コントロールを含む WinForm を用意します。写真を参照してください:テストする WinForm

  2. すべてのUIオートメーションテストスクリプトまたはwinform UIテストを自動化するコードを持つconsoleappがあります。

作業: リストボックスからアイテムを選択すると、画像ボックスは画像をロードして表示します (ロードするコードはリストボックスの SelectedIndexChanged イベントにあります)。

以下は、フォームの listBox コントロールのコードです。

private void listBox1_SelectedIndexChanged(object sender, EventArgs e)
    {
        textBox1.BackColor = Color.White;
        pictureBox1.Image = imageCollection.ElementAtOrDefault(listBox1.SelectedIndex);
        textBox1.Text = pictureBox1.Image.GetHashCode().ToString();
        this.Refresh();
    }

これで、私の UIAutomation テスト スクリプト コードは次のようになります: (必要な部分のみが示されています)

        AutomationElement listBoxElement = mainFormWindowElement.FindFirst(TreeScope.Children,
            new PropertyCondition(AutomationElement.AutomationIdProperty, "listBox1"));

        Assert.IsNotNull(listBoxElement, "Cant find the listbox element");

        AutomationElementCollection listBoxItems = 
            listBoxElement.FindAll(TreeScope.Children,new PropertyCondition(AutomationElement.ControlTypeProperty,ControlType.ListItem));

        AutomationElement itemToSelectInListBox = listBoxItems[new Random().Next(0, listBoxItems.Count - 1)];

        Object selectPattern = null;

        if (itemToSelectInListBox.TryGetCurrentPattern(SelectionItemPattern.Pattern, out selectPattern))
        {
            (selectPattern as SelectionItemPattern).AddToSelection();
            (selectPattern as SelectionItemPattern).Select();

        }

コードを実行した後、Select() メソッドは機能し、次のように Form リストボックス項目が選択されます。ここに画像の説明を入力

画像でわかるように、リストボックス項目は選択されていますが、イベント SelectedIndexChange は発生しておらず、ピクチャボックスは変更を反映していません。

したがって、ポインタは非常に役立ちます:)

ありがとう

4

4 に答える 4

1

@zenwalkerリストはデータバインディングによって作成されていますか?はいの場合、選択イベントが発生しない可能性があります。データをリストボックスにバインドするコードを共有できますか?これに答えてしまったことをお詫びします。コメントを追加するのに十分な担当者がいません。

または、次のSO記事を参照して、リストボックスWinforms、データバインディング、リストボックス、およびテキストボックスへのデータバインディングを実行する方法を確認することもできます。

于 2011-09-03T20:21:57.880 に答える
1

これは、SelectionMode が MultiSimple に変更された場合に機能します。なぜこれが起こるのかわかりません。ただし、SelectionMode が One の場合、selectedindex イベントは発生しません。

于 2012-01-12T05:45:27.500 に答える
0

が single または one に設定されている間は、イベントSelectedIndexChangedは発生しません。SelectionMode

SelectionChangedイベントが発生している間も PictureBox を更新してください。

于 2014-01-04T23:54:42.280 に答える