无论 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>"]