브라우저 객체
확장: EventEmitter
브라우저 객체는 브라우저나 모바일 기기를 제어하는 데 사용하는 세션 인스턴스입니다. WDIO 테스트 러너를 사용한다면, 전역 browser 또는 driver 객체를 통해 WebDriver 인스턴스에 접근하거나 @wdio/globals를 사용하여 가져올 수 있습니다. WebdriverIO를 독립 실행 모드로 사용한다면, 브라우저 객체는 remote 메서드에 의해 반환됩니다.
세션은 테스트 러너에 의해 초기화됩니다. 세션 종료도 마찬가지로 테스트 러너 프로세스에 의해 수행됩니다.
속성
브라우저 객체는 다음 속성을 가집니다:
| 이름 | 타입 | 상세 내용 |
|---|---|---|
capabilities | Object | 원격 서버에서 할당된 기능들. 예시: { |
requestedCapabilities | Object | 원격 서버에 요청된 기능들. 예시: { browserName: 'chrome' } |
sessionId | String | 원격 서버에서 할당된 세션 ID. |
options | Object | 브라우저 객체가 생성된 방식에 따른 WebdriverIO 옵션. 더 자세한 내용은 설정 유형을 참조하세요. |
commandList | String[] | 브라우저 인스턴스에 등록된 명령 목록 |
isW3C | Boolean | W3C 세션인지 나타냅니다 |
isChrome | Boolean | Chrome 인스턴스인지 나타냅니다 |
isFirefox | Boolean | Firefox 인스턴스인지 나타냅니다 |
isBidi | Boolean | 이 세션이 Bidi를 사용하는지 나타냅니다 |
isSauce | Boolean | 이 세션이 Sauce Labs에서 실행 중인지 나타냅니다 |
isMacApp | Boolean | 이 세션이 네이티브 Mac 앱용으로 실행 중인지 나타냅니다 |
isWindowsApp | Boolean | 이 세션이 네이티브 Windows 앱용으로 실행 중인지 나타냅니다 |
isMobile | Boolean | 모바일 세션임을 나타냅니다. 모바일 플래그에서 더 자세한 내용을 확인하세요. |
isIOS | Boolean | iOS 세션임을 나타냅니다. 모바일 플래그에서 더 자세한 내용을 확인하세요. |
isAndroid | Boolean | Android 세션임을 나타냅니다. 모바일 플래그에서 더 자세한 내용을 확인하세요. |
isNativeContext | Boolean | 모바일이 NATIVE_APP 컨텍스트에 있는지 나타냅니다. 모바일 플래그에서 더 자세한 내용을 확인하세요. |
mobileContext | string | 드라이버가 현재 있는 현재 컨텍스트를 제공합니다. 예를 들어 NATIVE_APP, 안드로이드의 경우 WEBVIEW_<packageName> 또는 iOS의 경우 WEBVIEW_<pid>입니다. driver.getContext()에 대한 추가 WebDriver를 저장합니다. 모바일 플래그에서 더 자세한 내용을 확인하세요. |
메서드
세션에 사용된 자동화 백엔드에 따라 WebdriverIO는 브라우저 객체에 연결될 프로토콜 명령을 식별합니다. 예를 들어 Chrome에서 자동화된 세션을 실행하는 경우, elementHover와 같은 Chromium 특정 명령에 액세스할 수 있지만 Appium 명령은 사용할 수 없습니다.
또한 WebdriverIO는 브라우저 또는 페이지의 요소와 상호 작용하는 데 사용할 것을 권장하는 편리한 메서드 세트를 제공합니다.
이 외에도 다음 명령을 사용할 수 있습니다:
| 이름 | 매개변수 | 상세 내용 |
|---|---|---|
addCommand | - commandName (타입: String)- fn (타입: Function)- attachToElement (타입: boolean) | 구성 목적으로 브라우저 객체에서 호출할 수 있는 사용자 지정 명령을 정의할 수 있습니다. 사용자 지정 명령 가이드에서 자세한 내용을 확인하세요. |
overwriteCommand | - commandName (타입: String)- fn (타입: Function)- attachToElement (타입: boolean) | 모든 브라우저 명령을 사용자 지정 기능으로 재정의할 수 있습니다. 프레임워크 사용자를 혼란스럽게 할 수 있으므로 신중하게 사용하세요. 사용자 지정 명령 가이드에서 자세한 내용을 확인하세요. |
addLocatorStrategy | - strategyName (타입: String)- fn (타입: Function) | 사용자 지정 선택자 전략을 정의할 수 있습니다. 선택자 가이드에서 자세한 내용을 확인하세요. |
참고 사항
모바일 플래그
세션이 모바일 기기에서 실행되는지 여부에 따라 테스트를 수정해야 하는 경우, 모바일 플래그에 액세스하여 확인할 수 있습니다.
예를 들어, 다음 구성이 있다고 가정해봅시다:
// wdio.conf.js
export const config = {
// ...
capabilities: \\{
platformName: 'iOS',
app: 'net.company.SafariLauncher',
udid: '123123123123abc',
deviceName: 'iPhone',
// ...
}
// ...
}
다음과 같이 테스트에서 이러한 플래그에 액세스할 수 있습니다:
// 참고: `driver`는 `browser` 객체와 동등하지만 의미론적으로 더 정확합니다
// 어떤 전역 변수를 사용할지 선택할 수 있습니다
console.log(driver.isMobile) // 출력: true
console.log(driver.isIOS) // 출력: true
console.log(driver.isAndroid) // 출력: false
예를 들어, 페이지 객체에서 기기 유형에 따라 선택자를 정의하려는 경우 이 기능이 유용할 수 있습니다:
// mypageobject.page.js
import Page from './page'
class LoginPage extends Page {
// ...
get username() {
const selectorAndroid = 'new UiSelector().text("Cancel").className("android.widget.Button")'
const selectorIOS = 'UIATarget.localTarget().frontMostApp().mainWindow().buttons()[0]'
const selectorType = driver.isAndroid ? 'android' : 'ios'
const selector = driver.isAndroid ? selectorAndroid : selectorIOS
return $(`${selectorType}=${selector}`)
}
// ...
}
특정 기기 유형에 대해서만 특정 테스트를 실행하는 데도 이러한 플래그를 사용할 수 있습니다:
// mytest.e2e.js
describe('my test', () => {
// ...
// Android 기기에서만 테스트 실행
if (driver.isAndroid) {
it('tests something only for Android', () => {
// ...
})
}
// ...
})
이벤트
브라우저 객체는 EventEmitter이며 여러 이벤트가 사용 사례에 맞게 발생합니다.
다음은 이벤트 목록입니다. 이것이 아직 사용 가능한 모든 이벤트의 전체 목록이 아님을 유의하세요. 여기에 더 많은 이벤트 설명을 추가하여 문서를 업데이트하는 데 기여해 주세요.