sharepoint で開発されたアプリに CodedUI テストを使用しています。問題は、異なる環境で機能しないことです。そのため、面倒でエラーが発生しやすい環境ごとにテストを再記録する必要があります。
少し調べてみると、サーバー コントロール用に生成された Web パーツの clientId は、環境ごとに異なることがわかりました (ページ内のすべてがまったく同じ (マスター ページ、ページ レイアウト、Web パーツ) であっても)。
この問題を (ほぼ) 回避するために、SearchPropertyExpressions を編集して、「contains」演算子で clientID の最後のセグメントのみを使用することを考えました。これは、生成されたコードを designer.cs で手動で編集する場合にうまく機能します。
私の質問は、これを自動化する簡単でエレガントな方法はありますか?
これまでに試したことは次のとおりです。インデクサー セッターの PropertyExpressionCollection クラスを独自の関数に置き換えました。この関数を使用して、設定されている値を確認し、文字列「ctl」で値を変更し、文字列の最後のセグメントに置き換えます (たとえば、「ctl0123_textbox1」を「textbox1」に置き換えます)。最後に、contains 演算子を使用します。それは正常に動作します。しかし、入力を無差別にフィルタリングします。フィルターか検索かは気にせず、どのタイプのコントロールに属しているかさえ知りません。この方法は確かにハックです。