2014-10-08 2 views
0

나는 각도기를 사용하여 응용 프로그램을 자동화했으며 키보드에서 아래쪽 화살표 버튼을 사용하여 유형에서 옵션을 선택하려는 상황을 경험했습니다. 다음은이 작업에 어떻게 접근하고 있는지를 보여줍니다.각도기에서 each() 블록을 종료

  1. 텍스트 필드에 파트를 입력 한 후 앞에 오는 각 옵션에 대한 참조가 표시됩니다.
  2. 지금, 각각의 옵션을 반복하여 필요한 옵션을 찾는 각도기의 .each() 메소드를 사용하고 있습니다.
  3. 나는 앞에있는 유형의 각 옵션을 반복하기 위해 아래쪽 화살표 버튼을 누르는 스크립트를 만들고 있습니다. 앞의 유형에 10 개의 옵션이 표시되고 선택해야하는 옵션이 5 번째 위치에 있다고 가정합니다. 이제 내가 다섯 번째 위치에 도달하면 옵션을 선택하지만 각() 함수는 계속됩니다.

필요한 옵션을 선택하면 루프를 종료하고 싶습니다. FOR 루프에서 BREAK 문과 같은 것.

BTW 위의 시나리오를 FOR 루프로 시도했지만 then() 처리기 내에서 BREAK 문을 사용할 수 없습니다.

이 상황에 대처하는 방법을 알려주십시오.

답변

0

예외를 throw하여 루프를 종료 할 수 있습니다. 루프를 시도하고 catch를 사용하여 결과를 논하십시오. 부울 변수를 사용하여 일치 항목을 발견하고 해당 지점 이후의 모든 항목을 무시한다는 것을 나타낼 수도 있습니다. 그래도 for 루프를 사용합니다.

편집 : 루프 종료는 작업

if (action) action() 
에게 전화 당신은 테스트

if(dataValue == optionToSelect){ 
    action = function() {benchmark.click(); ...} 
} 

내부

var action 

그런 다음 allBenchmarks.each 전에 조치를 개최 변수를 추가 할 수 있습니다 후

+0

문제는 ** then ** 처리기 출력 내에 설정된 변수 값에 액세스 할 수 없다는 것입니다. ide 블록. 또한 유형 선택에서 선택을 마친 후 사라지고 루프가 계속되면 다음 요소 참조를 찾지 못하고 "XPath ...와 함께 찾을 수없는 요소"라는 오류가 발생합니다. –

+0

변수를 블록 내부에서 설정하고 나중에 사용하려면 변수를 블록 외부에서 선언해야합니다. 작동하지 않는 코드를 게시 할 수 있습니까? –

+0

여기에 코드 스 니펫이 있습니다. (classValue.indexOf ("active")> 0) { benchmark.getAttribute ("data-value") { 벤치 마크. getAttribute ("클래스") { ") 그 때는 (함수 (dataValue) { 경우 (dataValue == optionToSelect) { benchmark.click() (TRUE) defer.fulfill; 복귀 약속; }}) }}); }}); –

관련 문제