스크립팅된 브라우저: 요소와 상호 작용하려는 시도가 실패함
Chrome 100(또는 최신) 런타임 에 대해 이전 런타임에서 생성된 모니터의 유효성을 검사할 때 페이지에서 요소를 찾고 상호작용하는 findElement 및 기타 메서드는 약속 처리 차이로 인해 실패할 수 있습니다. 모니터가 레거시 런타임에서 통과하고 새 런타임에서 실패하고 요소가 스크린샷에 있는 경우 약속 처리 논리를 개선해야 할 수 있습니다.
Selenium WebDriver 약속 관리자/제어 흐름을 통해 일부 기능은 약속을 관리하지 않고 레거시 런타임에서 순서대로 실행할 수 있습니다. 이 기능은 Selenium WebDriver 4.0에서 제거되었으며 런타임에서 더 이상 사용할 수 없습니다. 모든 비동기 함수와 프라미스는 await
또는 .then
프라미스 체인으로 관리해야 합니다. 이렇게 하면 스크립트 기능이 예상 순서대로 실행됩니다.
예를 들어, $browser.get이 약속을 반환하고 약속이 올바르게 처리되지 않더라도 약속 관리자/제어 흐름은 이 부분 스크립트가 성공적으로 완료되도록 허용할 수 있습니다.
$browser.get('http://example.com');
$browser.findElement($driver.By.css('h1'));
Chrome 100(또는 그 이상) 런타임 에서 프라미스를 반환하는 모든 메서드는 await 또는 .then을 사용해야 합니다. 구문을 사용하여 단계를 올바르게 정렬합니다. 더 깔끔한 구문과 더 쉬운 사용법으로 인해 await를 사용하는 것이 좋지만 .then 약속 체인도 여전히 지원됩니다.
await $browser.get('http://example.com');
let el = await $browser.findElement($driver.By.css('h1'));
스크립팅된 API: request
과의 차이점 got
Node.js 10 및 이전 스크립트 API 런타임 은 request
Node.js 모듈 을 사용하여 API를 테스트하는 데 사용할 수 있는 $http
객체를 제공했습니다 .
Node.js 16 및 최신 스크립트 API 런타임 은 request
} 대신 got
를 사용합니다. request
모듈은 2020년에 더 이상 사용되지 않으며 더 이상 새 API 또는 브라우저 기반 런타임에 포함되지 않습니다. $http
객체는 got
에 의해 구동되는 동안 사용자 정의 request
와 유사한 환경을 제공하여 기본 사용 사례에 대한 이전 버전과의 호환성을 제공하는 동시에 더 이상 사용되지 않는 모듈의 사용을 피합니다. request
의 모든 고급 사용 사례가 지원되거나 지원되지는 않습니다. 스크립트 예제 및 변환 가이드를 사용할 수 있습니다 .
팁
$http
객체가 제공하는 request
유사 환경은 Node.js 16 및 최신 스크립트 API 런타임에서 직접 request
를 사용하려는 모든 고객에게도 반환됩니다.
스크립팅된 브라우저: 사용 중단 경고($browser / $driver)
Chrome 72 및 이전 스크립트 브라우저 런타임 은 $driver
및 $browser
을 사용하여 Selenium WebDriver API를 노출했습니다. 이러한 개체는 이전 버전과의 호환성을 위해 Chrome 100 이상 런타임에서 계속 사용할 수 있지만 이러한 개체를 사용할 때 스크립트 로그에 사용 중단 경고가 표시됩니다. 이 경고로 인해 모니터에 장애가 발생하지 않으며 사용 중단 날짜가 설정되지 않았습니다.
Chrome 100 및 최신 스크립트 브라우저 런타임 은 $driver
및 $browser
대신 $selenium
및 $webDriver
를 사용 합니다. $selenium
및 $webDriver
객체는 Selenium WebDriver 4.1 API에 대한 액세스를 제공하고 $driver
및 $browser
객체는 Selenium WebDriver 3.6 구문과의 역호환성을 제공합니다.
스크립트 브라우저: waitForAndFindElement 및 waitForPendingRequests
waitForAndFindElement
및 waitForPendingRequests
메서드는 Chrome 72 및 이전 스크립트 브라우저 런타임에서 제공되는 New Relic 사용자 지정 메서드입니다. Chrome 100 및 최신 런타임에서 $driver
및 $browser
와 함께 계속 사용할 수 있지만 $selenium
및 $webDriver
와 함께 직접 Selenium WebDriver 4.1 API를 사용할 때는 사용할 수 없습니다. 이 변경은 New Relic의 Selenium WebDriver 구현을 기본 Selenium WebDriver 구현과 더 잘 맞출 것입니다.
새 런타임에서 waitForAndFindElement
또는 waitForPendingRequests
을 계속 사용하기로 선택한 고객은 코드 예제 를 모니터에 붙여넣을 수 있습니다.