나는 셀렌을 배우고 대상 문서와 같은 행에있는 체크 박스를 설정하려고 시도하고있다. 다음은 행의 모양입니다.Xpath 검색으로 개선 되었습니까?
<span><input>Checkbox</input></span> - <span>_lblDocumentCategoryDescription</span> - <span>_lblDocumentdescription</span>
각 행은 해당 행, 카테고리 및 설명에 대한 확인란으로 구성됩니다. 설명이 제공되며 행의 시작 부분에서 해당 확인란을 설정할 필요가 있습니다.
나는 작동하는 해결책이 있지만 내 방법이 매우 느리고 더 느린 것을 여러 번 호출 할 수 있으므로 더 나은 방법을 찾고 있습니다. 문제의 페이지에는 병합 및 인쇄 기능에 추가 될 수있는 315 개의 고정 문서가 있습니다. 보통 적어도 3 행을 추가하여 검색을 실행해야합니다.
현재 CSS에 대한 지식이 제한되어 있으므로 검색을 위해 xpath를 사용하고 있습니다. 사용하지 않는 한 DOM을 트래버스하는 것처럼 보이지 않습니다. 일부 자바 스크립트, 나는 피하려고 노력하고있다. 나는 JS를 실행하면 사용자를 정확하게 에뮬레이션하지 못하기 때문에 xpath가 해결책이라고 생각한다.
다른 사람들이 더 잘 찾았 으면하는 더 빠르고 더 나은 /보다 효율적인 솔루션이 있어야한다는 것을 알고 있습니까? 여기
내가 현재 사용하고 무엇을 :메소드 호출 CPTools을 setStupidCheckbox ("전대 부록", true)를;
방법 : 여기
public CPTools setStupidCheckbox(String documentToPrint, Boolean onIfTrue) {
this.log.trace("Starting: setStupidCheckbox; parameter: documentToPrint " + documentToPrint);
String xpathForCheckboxes = "/ancestor::tr//input";
try {
String xpathForDocumentDescriptions = String.format("//span[contains(text(), '%s')]", documentToPrint);
tools.waitForElement(By.xpath(xpathForDocumentDescriptions), 2);
if (driver.findElement(By.xpath(xpathForDocumentDescriptions)).isDisplayed()) {
driver.findElementByXPath(xpathForDocumentDescriptions + xpathForCheckboxes).click();
}
} catch (org.openqa.selenium.NoSuchElementException | ElementNotVisibleException e) {
}
this.log.trace("Ending: setStupidCheckbox");
return this;
}
테이블 행의 전체의 XPath 인 (이드의 동적 부분 _ctl316이다) 가능한 도움에 미리
<tr class="DataGridCellData">
<td class="DataGridCellDataCenterAligned">
<span class="DataLabel"><input id="ctl01_PageBody_grdDocument_ctl316_chkSelect" name="ctl01$PageBody$grdDocument$ctl316$chkSelect" onclick="javascript:uiHelper.GridCellCheck(this, 'chkAllSelect');" type="checkbox"></span>
</td><td>
<span id="ctl01_PageBody_grdDocument_ctl316_lblDocumentCategoryDescription">Approval Form</span>
</td><td align="left">
<span id="ctl01_PageBody_grdDocument_ctl316_lblDocumentdescription">Sublease Addendum</span>
</td><td align="center">
</td>
</tr>
감사합니다. XPath는 아래
당신이 얻고 싶은 요소? – NarendraR
"// 입력 [contains (@onclick, 'chkAllSelect')]"은 어떨까요? –
내 질문에 애매한 점에 대해 사과드립니다. 확인란을 선택하려고하지만 그 중 315 개가 있습니다. 내가 아는 유일한 참고 자료는 문서 설명 범위 (Sublease Addendum)에있는 텍스트입니다. –