"로케이터에 대해 둘 이상의 요소를 찾았습니다" 경고
제 테스트 중 하나에서, 저는 이 테스트에서CSS selector
:
element(by.css("ul.nav button"))
쿼리와 일치하는 요소가 여러 개 있지만 첫 번째 요소만 필요하므로 셀렉터도 괜찮습니다.
문제는...protractor
는 경고를 보냅니다.
경고 - 로케이터 By.cssSelector("ul.nav 버튼")에 여러 요소가 발견됨 - 첫 번째 결과가 사용됩니다.
경고를 억제할 수 있습니까?다시 말해, 어떻게 하면protractor
제가 문제를 인식하고 있고 경고가 더 이상 표시되지 않도록 하고 있다는 것을 알고 계십니까?
사용.protractor
개발 버전(마스터 브랜치에서 직접 설치)
대신 다음을 시도해 보십시오.
element.all(by.css("ul.nav button")).first()
기본적으로, 이는 사용자가 이미 여러 요소가 있다는 것을 알고 있으며, 질문에서 말한 것처럼 첫 번째 요소만 원한다는 것을 Protractor에게 알려줍니다.
그 경고에는 이유가 있다.데이터를 너무 밀접하게 테스트했습니다.셀렉터가 너무 일반적이기 때문에 좀 더 구체적으로 설명해야 합니다.라고 말하거나, 라고 할 수 있다.element(by.css("ul.nav button:nth-child(1)"))
또는 검색 범위를 다르게 지정할 수 있습니다.견인기 테스트는 테스트 스타일이나 돔이 아니라 비즈니스 로직을 테스트하는 것입니다.
코드 감소:
$$("ul.nav button").first()
xpath를 과소평가하지 마십시오.이를 통해 수천 가지 문제를 해결할 수 있습니다.
let elem = element(by.xpath('(//div//a)[3]'))
사용할 요소의 수를 지정할 수 있습니다.숫자는 보통 js에서처럼 0이 아닌 1에서 시작합니다.
언급URL : https://stackoverflow.com/questions/28464604/more-than-one-element-found-for-locator-warning
'programing' 카테고리의 다른 글
YAML 대신 JSON을 사용하여 ActiveRecord 시리얼화 (0) | 2023.02.23 |
---|---|
스프링 부츠 및 앵귤러 J가 있는 CORS가 작동하지 않음 (0) | 2023.02.23 |
명령어 정의에서 객체를 반환하는 것과 함수를 반환하는 것의 차이점 (0) | 2023.02.23 |
Angularjs가 ng-view 내에서 스크립트를 로드하지 않음 (0) | 2023.02.23 |
Visual Studio Code 자동 Import는 TypeScript의 Lerna 서브패키지로 절대 경로만 제공합니다. (0) | 2023.02.23 |