このソリューションは、XPath のバージョンに関係なく機能します。まず、COMMON ヘルパー クラスのどこかにメソッドを作成します。
public static string GetXpathStringForIdEndsWith(string endStringOfControlId)
{
return "//*[substring(@id, string-length(@id)- string-length(\"" + endStringOfControlId + "\") + 1 )=\"" + endStringOfControlId + "\"]";
}
私の場合、以下は私の製品の異なるバージョンのコントロールIDです::
v1.0 :: ContentPlaceHolderDefault_MasterPlaceholder_HomeLoggedOut_7_hylHomeLoginCreateUser
v2.0 :: ContentPlaceHolderDefault_MasterPlaceholder_HomeLoggedOut_8_hylHomeLoginCreateUser
次に、上記のメソッドを呼び出して、静的な終了文字列を持つコントロールを見つけることができます。
By.XPath(Common.GetXpathStringForIdEndsWith("<End String of the Control Id>"))
v1 と v2 について言及したコントロール ID については、次のように使用します。
By.XPath(Common.GetXpathStringForIdEndsWith("hylHomeLoginCreateUser"))
全体的なロジックは、以下の XPath 式を使用して、特定の文字列で終わるコントロールを見つけることができるということです。
//*[substring(@id, string-length(@id)- string-length("<EndString>") + 1 )="<EndString>"]