셀레늄 스크립트를 사용하여 하나씩 내 웹 페이지의 링크를 클릭하고 각 클릭이 페이지를 새로 고침합니다. 그러나 셀레늄은 방문과 같은 CSS 의사 클래스를 지원하지 않으므로 다음에 클릭하려는 것과 이미 클릭 된 것을 구별 할 수는 없습니다. 내 문제를 해결할 방법이 있습니까? XPath를 사용하여 그들을 통해 http://pastebin.com/z0uRTHHp셀렌 스크립트
셀렌 스크립트
답변
새로운 답 :
참고 : 당신은 https://addons.mozilla.org/en-US/firefox/addon/85794/에서 흐름 제어 플러그인을 설치 (또는 http://51elliot.blogspot.com/2008/02/selenium-ide-goto.html에서 사용자 확장 사용)
<tr>
<td>storeXpathCount</td>
<td>//body/descendant::a</td>
<td>linkCount</td>
</tr>
<tr>
<td>store</td>
<td>1</td>
<td>link</td>
</tr>
<tr>
<td>label</td>
<td>checkLink</td>
<td></td>
</tr>
<tr>
<td>echo</td>
<td>checking link ${link} of ${linkCount}</td>
<td></td>
</tr>
<tr>
<td>clickAndWait</td>
<td>//body/descendant::a[${link}]</td>
<td></td>
</tr>
<!-- ADD YOUR CHECKS HERE -->
<tr>
<td>goBackAndWait</td>
<td></td>
<td></td>
</tr>
<tr>
<td>while</td>
<td>storedVars['link'] <= storedVars['linkCount']</td>
<td></td>
</tr>
<tr>
<td>storeEval</td>
<td>storedVars['link'] = ${link} + 1;</td>
<td></td>
</tr>
<tr>
<td>gotolabel</td>
<td>checkLink</td>
<td></td>
</tr>
<tr>
<td>endWhile</td>
<td></td>
<td></td>
</tr>
당신은 페이지에서 링크의 수를 반환 할 getXPathCount
명령을 사용할 수 있습니다, 다음 루프 :
여기 내 코드입니다. 셀레늄 RC와 자바를 사용하는 간단한 예는 다음과 같습니다
int linkCount = selenium.getXpathCount("/descendant::a").intValue();
for (int i = 0; i < linkCount; i++) {
selenium.click("/descendant::a[" + i + "]");
selenium.waitForPageToLoad("60000");
//ADD YOUR CHECKS HERE
selenium.goBack();
selenium.waitForPageToLoad("60000");
}
당신은 셀레늄 2 WebDriver를 사용하는 경우는, 다음 작업을해야하는 데 도움이
List<WebElement> links = driver.findElements(By.xpath("/descendant::a"));
int lSize = links.size();
for (int l = 0; l < lSize; l++) {
links = driver.findElements(By.xpath("/descendant::a"));
WebElement link = links.get(l);
link.click();
//ADD YOUR CHECKS HERE
driver.navigate().back();
}
희망을.
감사합니다. Firefox Addon의 javascript 및 html 테스트 케이스에서이 작업을 수행하고 있습니다. 제 질문의 코드 링크를 참조하십시오. 프레임 (html 및 javascript 테스트 케이스)에 개념을 맞추는 방법을 잘 모르겠습니다. 샘플 코드를 제공하고 도움을 줄 수 있습니까? – user121196
셀렌 IDE –
을 클릭해야합니다 on 페이지의 전체 링크 :
@Test
public void test() throws InterruptedException {
try {
List<WebElement> no = driver.findElements(By.tagName("a"));
int nooflinks = no.size();
System.out.println(nooflinks);
for (WebElement pagelink : no) {
no.click();
String linktext = pagelink.getText();
driver.navigate.refresh();
Thread.sleep(1000);
System.out.println(linktext);
}
}
catch (Exception e){
System.out.println("error "+e);
}
}
먼저 웹 페이지의 모든 링크를 가져와야합니다. :
List<WebElement> links= driver.findElements(By.Tag('a'));
당신이 특정 링크에 클릭으로 당신이이 경우에 완전히 클릭하여 다음 링크를 기다릴 필요가 있으므로, 페이지가 새로 고침 것입니다 클릭 후 언급 한 바와 같이 하나 하나를 반복해야 할 두 번째 문제 수 :
for(WebElement link: links)
{
//wait for element to clickable
WebDriverWait wait = new WebDriverWait(driver, 10);
wait.until(ExpectedConditions.elementToBeClickable(link);
link.click();
}
당신은 무엇을 링크하는 것은 이미 링크 텍스트 색상이 퇴색하거나 클릭 한 후 변경됩니다 될 수 있으므로 클릭 된 것을 구분하려는 경우.
- 1. 셀렌 웹 드라이버 및 셀렌 RC
- 2. 파라메터와 셀렌
- 3. 셀렌 C#
- 4. 셀렌 C#
- 5. 방화범과 셀렌 : 성능
- 6. 개인 브라우징 모드에서 FireFox를 여는 셀렌 RC 스크립트
- 7. Python 셀렌 스크립트에서이 단추 정의로 자바 스크립트 이벤트를 트리거하는 방법
- 8. 셀렌 형식 키 문제
- 9. 셀렌 원격 제어
- 10. 크롬에서 AJAX를 기다리는 셀렌.
- 11. 셀렌 그리드 서비스
- 12. 셀렌 확장 : "차단"명령
- 13. 셀렌 RC - htmlsuite 오류
- 14. 셀렌 및 iframe
- 15. 셀렌 그리드 병렬 실행
- 16. ASP.Net을 사용하는 셀렌?
- 17. 셀렌 크래시 처리 방법
- 18. 비쥬얼 스튜디오의 셀렌 RC
- 19. Windows/Linux에서의 셀렌 차이점
- 20. 셀렌 테스트를 실행할 때 javaScript 경고를 처리합니까?
- 21. webdrive 셀렌 및 경고 메시지 확인
- 22. 셀렌 RC가 시간 초과를 오류로보고합니까?
- 23. 셀렌 2.0 확장 모음이 있습니까?
- 24. 셀렌 2/웹 드라이버 (C#
- 25. 셀렌 : 선택 창이 세션에 해당합니까
- 26. 셀렌 그리드 : 허브의 대기열 크기?
- 27. 셀렌 스크립트에서 Html 예제를 확인하십시오.
- 28. 셀렌 데이터 기반 테스트 C#
- 29. 스윙 GUI를 통해 셀렌 제어하기
- 30. 셀렌 액세서에서 변수를 저장하지 않습니다.
통해 해결하기위한 새로운 대답을 추가했습니다 .... – user121196
clickAndWait 다음 xpath 셀레늄, 어떤 생각에서 작동하지 않습니다? clickAndWait // a [text() = 'Test'] [$ {link}] – user121196
XPath의 미묘함 때문에 // // [1]이 첫 번째 요소 인 모든 하위 요소 'a'를 선택할 수 있습니다. 부모의 자녀들이 아닌, 전체 문서의 첫 번째 'a'요소가 아닙니다. 당신이'body/descendant :: a [1]'과 같은 것을 사용하거나'id ('myLinks')/descendant :: a [1]'과 같은 id를 가진 요소에 앵커링하는 것이 더 효과적 일 수 있습니다. 마지막 예제에서는'xpath ='로 locator를 진행해야한다. –