我有这个xPath://*[@id="searchpopupSCH_USER_1496689382343"]
但在后端,13位数字实际上是一个时间戳,因此每次重新测试/重新点击时它都会改变。
例如,
1st tab, //*[@id="searchpopupSCH_USER_1496689382343"]
2nt tab, //*[@id="searchpopupSCH_USER_1496694868441"]
是否要定位不断变化的ID?
我正在考虑使用Reg Exp,但不知怎的,我有点阻止。
String frameID = "//*[@id=\"searchpopupSCH_USER_";
String regExp = "\\d{13}";
Pattern p = Pattern.compile(frameID + regExp);
WebElement xPathUserList;
xPathUserList.findElement(By.xpath(p)); //param of xpath only take String
我关心的是WebElement。
如何定位By.Path(" // * [@ id = \" searchpopupSCH_USER_xxxxxxxxxxxx"
感谢您的投入。
答案 0 :(得分:0)
使用包含?甚至starts-with
//*[contains(@id, "searchpopupSCH_USER_")]
//*[starts-with(@id, "searchpopupSCH_USER_")]
答案 1 :(得分:-1)
声明如下变量:
public static final String TIME_STAMP = new SimpleDateFormat("ddMMyyHHmmss").format(Calendar.getInstance().getTime());
然后在xpath:
driver.findElement(By.xapth("//htmltag[@id="searchpopupSCH_USER_".concat(TIME_STAMP + "]"));
根据您的要求,您可以更改日期格式。