동적 목록도 동적 인 IDs
, CSS
및 기타 모든 옵션은 요소 목록을 얻는 데 도움이되지 않습니다 편도 기대합니다. 을 사용하십시오. 그러나 어떤면에서? 때문에 단지 셀레늄과 XPATH 1.0
지원,셀레늄/getElements XPATH 및 포함 (JAVA)
//a[@id='contentDataTable:4711:startMenu']/span
//a[@id='contentDataTable:4712:startMenu']/span
//a[@id='contentDataTable:4713:startMenu']/span
..
//a[@id='contentDataTable:4714:startMenu']/span
일치 내가 사용할 수 없습니다
목록이 목록은이 같은 XPATH
값이 포함되어 있습니다. 그래서
xpath=//a[contains(@id, 'contentDataTable:')]
했지만 그것은 작동하지 않습니다 ... 올바른
contains()
호출을 찾고 있어요. 내가 요소를 얻기 위해 시도한 방법
:
public List<WebElement> getWebElements(Boolean isDebug, Boolean isHPOMDebug, RemoteWebDriver remWebDriver, String htmlType, String htmlValue, String actField) {
List<WebElement> webElements = null;
String webRequest = "";
try {
switch (htmlType) {
case "XPATH":
webRequest = htmlValue;
webElements = remWebDriver.findElements(By.xpath(webRequest));
break;
case "LINKTEXT":
webRequest = htmlValue;
webElements = remWebDriver.findElements(By.linkText(webRequest));
break;
case "LINKTEXTPART":
webRequest = htmlValue;
webElements = remWebDriver.findElements(By.partialLinkText(webRequest));
break;
case "CSS":
webRequest = htmlValue;
webElements = remWebDriver.findElements(By.cssSelector(webRequest));
break;
case "TAG":
webRequest = htmlValue;
webElements = remWebDriver.findElements(By.tagName(webRequest));
break;
case "ID":
webRequest = actField;
webElements = remWebDriver.findElements(By.id(webRequest));
break;
case "NAME":
webRequest = actField;
webElements = remWebDriver.findElements(By.name(webRequest));
break;
default:
webElements = null;
} // END OF INNER SWTICH
if (isDebug && webElements != null && webElements.size() > 1) {
logger.log(LogStatus.INFO, "getWebElements: " + webRequest + " FOUND: " + webElements.size());
for (int i=0;i<webElements.size(); i++) {
logger.log(LogStatus.INFO, "getWebElements: (" + i + ") TEXT = [" + webElements.get(i).getText() + "]");
logger.log(LogStatus.INFO, "getWebElements: (" + i + ") TAG = [" + webElements.get(i).getTagName() + "]");
logger.log(LogStatus.INFO, "getWebElements: (" + i + ") LOC = [" + webElements.get(i).getLocation() + "]");
}
report.flush();
}
}
catch (Exception e) {
e.printStackTrace();
webElements = null;
}
return(webElements);
}
왜 당신이 작동하지 않는 생각으로 - :이 줄을 변경해야
? it 또는'// a [starts-with (@id, 'contentDataTable :')]'가 작동해야합니다. – splash58
제공된 xpath는 괜찮아 보이니 xPath가 작동하지 않는 이유는 무엇입니까 ?? 어떤 예외가 있습니까 ?? –
xpath가 okej로 보이고 xpath로 firefox 또는 chome에서 직접 테스트 했습니까?/span' 반환 – Tim