AutomationIDを理解しようとする簡単なMSコード化UIテストと関連するWPFアプリケーションを作成しました。まず、textBoxのXamlコードにAutomationIDを割り当てます。次に、textBoxに入力を記録し、関連するUIMap関数を作成します。最初に、textBoxの検索プロパティで、AutomationIDが正しいです。ただし、xaml AutomationIDを変更した場合、検索プロパティは新しいAutomationIDを取得しません。ここに私のコードとスクリーンショットです:MSコード化されたUIテスト新しいXaml AutomationIDを取得しない検索プロパティ
「XAMLコード:TextBoxのために、私は "TextBoxAutoID01" から "TextBoxAutoID07" にテキストボックスUIMap検索プロパティで
<Grid>
<CheckBox x:Name="checkBox" Content="CheckBox" HorizontalAlignment="Left" Margin="176,254,0,0" VerticalAlignment="Top" IsEnabled="True"/>
<TextBox x:Name="textBox1" HorizontalAlignment="Left" Height="23" Margin="176,147,0,0" TextWrapping="Wrap" Text="TextBox" VerticalAlignment="Top" Width="120" AutomationProperties.AutomationId="TextBoxAutoID07"/>
</Grid>`
をAutoamtionIdを変更し、たAutomationIDはまだありますオリジナルの "TextBoxAutoID01"
そしてUIMap.design.csコードは、新しいれたAutomationIDが更新されていないことを反映しています
public WpfEdit UITextBoxAutoID01Edit
{
get
{
if ((this.mUITextBoxAutoID01Edit == null))
{
this.mUITextBoxAutoID01Edit = new WpfEdit(this);
#region Search Criteria
this.mUITextBoxAutoID01Edit.SearchProperties[WpfEdit.PropertyNames.AutomationId] = "TextBoxAutoID01";
this.mUITextBoxAutoID01Edit.WindowTitles.Add("MainWindow");
#endregion
}
return this.mUITextBoxAutoID01Edit;
}
}
この時点で、検索プロパティの更新を行う唯一の方法は、UIMapのコントロールを削除して再度記録することです。
UIMapを再録音しないで新しいxaml AutomationIDを更新する方法についての洞察は非常に高く評価されます。
ありがとうございます!私の唯一の懸念は、他の人が書いたWPFアプリケーションのテストを始めるときだけだと思います。ここで、開発者がAutomationIDを変更すると、CUIT内で対応するものを手動で変更する必要があります。これはもちろん、良いコミュニケーションでは大丈夫ですが、理想的ではありません。 AutomationIDを変更すると、テストコードが破られ、変更されたヘッズアップが与えられます。 – kme
@kme AutomationIDが頻繁に変更されることが予想される場合は、コントロールの他のプロパティ、変更されないものを見つけます。 [検索プロパティの編集]ウィンドウでAutomationIDを削除し、他のプロパティを追加します。 – AdrianHHH