선택자
WebDriver 프로토콜은 요소를 쿼리하기 위한 여러 선택자 전략을 제공합니다. WebdriverIO는 요소 선택을 간단하게 유지하기 위해 이를 단순화합니다. 요소를 쿼리하는 명령이 $
와 $$
로 호출되지만, 이들은 jQuery나 Sizzle 선택자 엔진과는 관련이 없습니다.
다양한 선택자가 있지만, 그 중 일부만이 올바른 요소를 찾는 탄력적인 방법을 제공합니다. 예를 들어, 다음과 같은 버튼이 있다고 가정해 봅시다:
<button
id="main"
class="btn btn-large"
name="submission"
role="button"
data-testid="submit"
>
Submit
</button>
다음 선택자들을 권장하거나 권장하지 않습니다:
선택자 | 권장 여부 | 참고 |
---|---|---|
$('button') | 🚨 절대 사용하지 말 것 | 최악 - 너무 일반적이고 컨텍스트가 없음. |
$('.btn.btn-large') | 🚨 절대 사용하지 말 것 | 나쁨. 스타일링과 결합됨. 변경 가능성이 높음. |
$('#main') | ⚠️ 가끔씩 사용 | 더 나음. 그러나 여전히 스타일링이나 JS 이벤트 리스너와 결합됨. |
$(() => document.queryElement('button')) | ⚠️ 가끔씩 사용 | 효과적인 쿼리링, 작성하기 복잡함. |
$('button[name="submission"]') | ⚠️ 가끔씩 사용 | HTML 의미를 가진 name 속성과 결합됨. |
$('button[data-testid="submit"]') | ✅ 좋음 | 추가 속성이 필요하며, 접근성과 연결되지 않음. |
$('aria/Submit') 또는 $('button=Submit') | ✅ 항상 권장 | 최고. 사용자가 페이지와 상호작용하는 방식을 닮음. 프론트엔드의 번역 파일을 사용하여 번역이 업데이트될 때 테스트가 실패하지 않도록 하는 것이 좋습니다. |
CSS 쿼리 선택자
달리 지정되지 않는 한, WebdriverIO는 CSS 선택자 패턴을 사용하여 요소를 쿼리합니다. 예:
selectors/example.js
loading...