• /
  • EnglishEspañol日本語한국어Português
  • 로그인지금 시작하기

사용자의 편의를 위해 제공되는 기계 번역입니다.

영문본과 번역본이 일치하지 않는 경우 영문본이 우선합니다. 보다 자세한 내용은 이 페이지를 방문하시기 바랍니다.

문제 신고

신세틱스 스크립트 브라우저 참조(Chrome 및 Firefox)

셀레니엄 웹 드라이브 4.1 API 사용하여 펼쳐보기 모니터를 실행하려면 펼쳐보기의 구문이 변수 $selenium$webDriver을 사용하는지 확인하세요. 셀레니엄 웹 드라이버 API 3.6.0에 접속하려면, 0.5.0+ 브라우저 참조 문서 에 설명된 대로 변수 $driver$browser 사용합니다.

특히:

  • $selenium selenium-webdriver 모듈의 모든 내보내기를 제공합니다(예: ActionSequence , Button , By 또는 WebElement ). 이는 이전 런타임의 $driver 사용에 매핑됩니다.
  • $webDriver selenium-webdriver.WebDriver() 의 합성 모니터링 인스턴스입니다. get()findElement() 같은 기본 기본 WebDriver API와 일부 합성 사용자 지정 API를 노출합니다. 이는 이전 런타임의 $browser 사용에 매핑됩니다.
  • $headers 요청 헤더를 수정하는 기능을 제공합니다. 이 기능은 여러 $browser 메서드의 이전 런타임에서 사용할 수 있었습니다.
  • $urlFilter 특정 도메인에 대한 요청을 제한하기 위해 허용 및 거부 목록을 생성하는 기능을 제공합니다. 이 기능은 여러 $browser 메서드의 이전 런타임에서 사용할 수 있었습니다.

이전 모니터 버전을 사용하는 경우 모니터 버전 0.5.0 및 0.6.0 설명서 또는 모니터 버전 0.4.0 이하 설명서 를 참조하십시오.

모니터 버전 및 런타임 차이점에 대한 자세한 내용은 런타임 환경 을 참조하세요.

중요

Selenium WebDriver 약속 관리자/제어 흐름은 수동으로 약속/비동기 기능을 관리하지 않고도 일부 기능을 순서대로 실행할 수 있도록 했습니다. 이것은 Selenium WebDriver 4.0에서 제거되었으며 런타임에서 더 이상 사용할 수 없습니다. 모든 비동기 함수와 프라미스는 await 또는 .then 프라미스 체인으로 관리해야 합니다. 이렇게 하면 스크립트 기능이 예상 순서대로 실행됩니다.

몇 가지 일반적인 사용 예는 스크립팅된 브라우저 모니터 소개를참조하십시오.

최상위 기능: 스크립트 작성

New Relic은 $webDriver 인스턴스에서 직접 최상위 함수를 호출합니다. 이들은 많은 기본 스크립팅 가능한 작업을 다루는 광범위한 기능을 제공합니다.

waitForAndFindElement(locator, timeout)waitForPendingRequests(timeout) 메서드는 런타임에서 제거되었으며 $webDriver 를 통해 사용할 수 없습니다. 이전 버전과의 호환성을 사용할 수 있지만 더 이상 사용되지 않는 것으로 간주되어 향후 런타임에서 제거될 수 있습니다. 다음 코드 조각을 사용하여 해당 기능을 교체합니다.

함수

설명

$webDriver.actions()

이 드라이버를 사용하여 새 동작 시퀀스를 만듭니다. 사용 가능한 작업 목록은 ActionSequence 를 참조하십시오.

반환 값: 무효

$headers.add(headerKey: string, headerValue: string)

값이 headerValue 인 헤더 headerKey 를 런타임에 추가합니다.

반환 값: 무효

$headers.addMultiple(headers: {key:value...})

런타임에 여러 헤더를 추가합니다.

반환 값: 무효

$headers.get(headerKey: string)

현재 구성된 헤더의 맵을 반환합니다.

반환 값: 약속

$headers.getAll()

현재 구성된 헤더의 맵을 반환합니다.

반환 값: 지도

$headers.getKeys()

현재 구성된 헤더 키의 배열을 반환합니다.

반환 값: 배열

$headers.has(headerKey: string)

이 헤더가 있는지 여부를 나타내는 bool을 반환합니다.

반환 값: 부울

$headers.remove(header: string)

런타임에서 특정 헤더를 삭제합니다.

반환 값: 무효

$headers.removeMmultiple(headers: {key:value...})

런타임에서 인수의 모든 헤더를 삭제합니다.

반환 값: 무효

$headers.clear()

런타임에서 모든 헤더를 삭제합니다.

반환 값: 무효

$urlFilter.addToDenyList(hostnameArr: [string])

거부 목록에 인수 배열의 모든 호스트 이름을 추가합니다. 와일드카드 사용을 허용합니다.

반환 값: 약속

$urlFilter.addToAllowList(hostnameArr: [string])

허용 목록에 인수 배열의 모든 호스트 이름을 추가합니다. 와일드카드 사용을 허용합니다.

반환 값: 약속

$urlFilter.removeFromDenyList(hostnameArr: [string])

거부 목록에서 인수의 모든 호스트 이름을 제거합니다.

반환 값: 약속

$urlFilter.removeFromAllowList(hostnameArr: [string])

허용 목록에서 인수의 모든 호스트 이름을 제거합니다.

반환 값: 약속

$webDriver.executeAsyncScript(script: ?, var_args: ?)

현재 선택한 프레임 또는 창의 컨텍스트에서 비동기 JavaScript를 실행하도록 명령을 예약합니다.

반환 값: 약속

$webDriver.executeScript(script: ?, var_args: ?)

현재 선택한 프레임 또는 창의 컨텍스트에서 JavaScript를 실행하도록 명령을 예약합니다.

반환 값: 약속

$webDriver.findElement(locator: $selenium.Locator)

페이지에서 요소를 찾는 명령을 예약합니다. 찾을 수 없으면 종합 모니터링에서 오류를 반환합니다.

반환 값: WebElementPromise

$webDriver.findElements(locator: $selenium.Locator)

페이지에서 여러 요소를 검색 하도록 명령을 예약합니다.

반환 값: 약속

$webDriver.get(url: string)

합성 브라우저에서 웹 페이지를 로드합니다.

반환 값: 약속

$webDriver.getAllWindowHandles()

사용 가능한 창 핸들의 현재 목록을 검색하는 명령을 예약합니다.

반환 값: 약속

$webDriver.getCapabilities()

인스턴스의 기능으로 해결될 약속입니다.

반환 값: 약속

$webDriver.getCurrentUrl()

현재 페이지의 URL을 검색하는 명령을 예약합니다.

반환 값: 약속

$webDriver.getPageSource()

현재 페이지의 소스를 검색하는 명령을 예약합니다. 반환된 페이지 소스는 기본 DOM을 나타냅니다. 웹 서버에서 보낸 응답과 같은 방식으로 형식화되거나 이스케이프될 것으로 기대하지 마십시오.

반환 값: 약속

$webDriver.getSession()

이 클라이언트의 세션에 대한 약속입니다.

반환 값: 약속

$webDriver.getTitle()

현재 페이지의 제목을 검색하는 명령을 예약합니다.

반환 값: 약속

$webDriver.getWindowHandle()

현재 창 핸들을 검색하는 명령을 예약합니다.

반환 값: 약속

$webDriver.manage()

이 인스턴스의 옵션 인터페이스입니다. 쿠키, 시간 초과 및 기타 창 옵션을 관리할 수 있습니다.

반환 값: 무효

$webDriver.navigate()

이 인스턴스의 탐색 인터페이스(브라우저 기능 기록) 입니다.

반환 값: 무효

$webDriver.sleep()

지정된 시간 동안 드라이버를 절전 모드로 전환하는 명령을 예약합니다.

반환 값: 약속

$webDriver.switchTo()

이 인스턴스의 대상 로케이터 인터페이스입니다.

반환 값: 무효

$webDriver.takeScreenshot()

스크린샷을 찍도록 명령을 예약합니다.

반환 값: 약속

$webDriver.wait(fn: $driver.Condition, timeout: number, opt_message: string)

제공된 함수에서 정의한 대로 조건이 유지될 때까지 기다리도록 명령을 예약합니다.

반환 값: WebElement

$browser.waitForPendingRequests(timeout: number)

스크립트가 시작된 요청이 제한 시간까지 반환될 때까지 기다리도록 합니다. 비차단 리소스를 추적하는 데 유용합니다.

반환 값: 약속

거부 목록: 와일드카드 사용

브라우저 인스턴스의 거부 목록에 도메인을 추가하려면 와일드카드가 차단할 URL의 URL 구문과 일치해야 합니다.

전체 .com 거부 목록에는 다음 기능이 포함되어야 합니다.

함수

차단 조치

$urlFilter.addToDenyList(['*.com']);

a.com

$urlFilter.addToDenyList([*.*.com']);

a.b.com

$urlFilter.addToDenyList([*.*.*.com']);

a.b.c.com

$urlFilter.addToDenyList([www.*.com']);

www.a.com

$urlFilter.addToDenyList([www.*.*.com']);

www.a.b.com

$urlFilter.addToDenyList(['www.*.*.*.com']);

www.a.b.c.com

옵션: 브라우저 인스턴스 관리

이러한 기능은 쿠키, 시간 초과 및 창 크기와 같은 브라우저 인스턴스에 대한 옵션을 관리합니다. $webDriver.manage() 함수를 통해 이러한 옵션에 액세스합니다.

함수

설명

$webDriver.manage().addCookie(spec: object)

쿠키를 추가하는 명령을 예약합니다.

spec 브라우저 쿠키를 설명하는 레코드 개체입니다. 자세한 내용은 웹드라이버 설명서를 참조하세요.

반환 값: 약속

$webDriver.manage().deleteAllCookies()

현재 페이지에 표시되는 모든 쿠키를 삭제하는 명령을 예약합니다.

반환 값: 약속

$webDriver.manage().deleteCookie(name: string)

지정된 이름의 쿠키를 삭제하는 명령을 예약합니다. 이 명령은 현재 페이지에서 볼 수 있는 주어진 이름의 쿠키가 없는 경우 작동하지 않습니다.

반환 값: 약속

$webDriver.manage().getCookie(name: string)

지정된 이름으로 쿠키를 검색하는 명령을 예약합니다. 그러한 쿠키가 없으면 null을 반환합니다. 쿠키는 WebDriver 유선 프로토콜에 설명된 대로 JSON 개체로 반환됩니다.

반환 값: 약속

$webDriver.manage().getCookies()

현재 페이지에 표시되는 모든 쿠키를 검색하는 명령을 예약합니다. New Relic Syntheticcs는 WebDriver 유선 프로토콜에 설명된 대로 각 쿠키를 JSON 개체로 반환합니다.

반환 값: 약속

$webDriver.manage().getTimeouts()

현재 스크립트, pageLoad 및 암시적 시간 초과를 반환합니다.

반환 값: 약속

$webDriver.manage().setTimeouts({implicit: numberMS})

요소가 즉시 존재하지 않는 경우 드라이버가 요소를 검색할 때 기다려야 하는 시간을 지정합니다. 대기 시간 초과를 0 으로 설정하면 암시적 대기가 비활성화됩니다.

대기 시간 초과를 늘리면 특히 XPath와 같은 느린 위치 전략에서 테스트 실행 시간이 증가하므로 주의하십시오. 기본값은 10초입니다.

반환 값: 약속

$webDriver.manage().setTimeouts({pageLoad: numberMS})

오류를 반환하기 전에 페이지 로드가 완료될 때까지 기다리는 시간을 설정합니다. 시간 제한이 음수이면 페이지 로드가 최대 180초 동안 지속될 수 있습니다. 기본값은 60초입니다.

반환 값: 약속

$webDriver.manage().setTimeouts({script: numberMS})

비동기 스크립트가 오류를 반환하기 전에 실행을 완료할 때까지 기다리는 시간(밀리초)을 설정합니다. 기본값은 30초입니다.

반환 값: 약속

$webDriver.manage().window().getRect()

화면의 왼쪽 상단 모서리와 창의 크기(너비 및 높이)를 기준으로 창의 현재 위치(x 및 y)를 검색합니다.

반환 값: 약속

$webDriver.manage().window().maximize()

현재 창을 최대화합니다.

반환 값: 약속

$webDriver.manage().window().setRect({x: number|undefined, y: number|undefined, width: number|undefined, height: number|undefined})

화면의 왼쪽 상단 모서리와 창의 크기(너비 및 높이)를 기준으로 창의 현재 위치(x 및 y)를 설정합니다.

반환 값: 약속

로케이터: 페이지 요소 찾기

로케이터는 locator 인스턴스를 생성하기 위한 팩토리 함수 모음입니다. 로케이터는 $webDriver.findElement 과 같은 함수에 전달할 수 있는 DOM 요소를 찾습니다. $selenium.By 를 통해 전화하세요.

함수

설명

$selenium.By.className(className: string)

특정 클래스 이름을 가진 요소를 찾습니다. 반환된 로케이터는 CSS 선택기 .class 로 요소를 검색하는 것과 같습니다.

반환 값: 로케이터

$selenium.By.css(cssName: string)

CSS 선택기를 사용하여 요소를 찾습니다.

반환 값: 로케이터

$selenium.By.id(id: string)

ID로 요소를 찾습니다.

반환 값: 로케이터

$selenium.By.linkText(linkText: string)

보이는 텍스트가 주어진 문자열과 일치하는 링크 요소를 찾습니다.

반환 값: 로케이터

$selenium.By.js(js: string)

JavaScript 표현식을 평가하여 요소를 찾습니다.

반환 값: 로케이터

$selenium.By.name(name: string)

name 속성이 주어진 값을 갖는 요소를 찾습니다.

반환 값: 로케이터

$selenium.By.partialLinkText(partialLinkText: string)

표시되는 getText 에 지정된 하위 문자열이 포함된 링크 요소를 찾습니다.

반환 값: 로케이터

$selenium.By.tagName(tagName: string)

주어진 태그 이름을 가진 요소를 찾습니다. 반환된 로케이터는 getElementsByTagName DOM 함수를 사용하는 것과 같습니다.

반환 값: 로케이터

$selenium.By.xpath(xpath: string)

XPath 선택기와 일치하는 요소를 찾습니다.

반환 값: 로케이터

WebElement: 페이지 요소와 상호 작용

$webDriver.findElement 과 같은 함수가 WebElement 참조를 반환하면 이러한 함수를 사용하여 해당 요소와 상호작용할 수 있습니다. 예를 들어 버튼을 클릭하고 텍스트를 보내 입력을 구성하고 테스트할 요소의 속성을 가져올 수 있습니다.

함수

설명

click()

이 요소를 클릭합니다.

반환 값: 자체 참조

sendKeys(var_args: ?)

이 인스턴스가 나타내는 DOM 요소에 시퀀스를 입력하도록 명령을 예약합니다.

반환 값: WebElement

getTagName()

이 요소의 태그/노드 이름을 쿼리하도록 명령을 예약합니다.

반환 값: WebElement

getCssValue(name: string)

이 인스턴스가 나타내는 요소의 계산된 스타일을 쿼리하도록 명령을 예약합니다. 요소가 부모로부터 명명된 스타일을 상속하는 경우 부모는 해당 값을 쿼리합니다. 가능한 경우 색상 값은 16진수 표현으로 변환됩니다(예: rgb(0, 255, 0) 대신 #00ff00).

반환 값: 약속

getAttribute(name: string)

요소의 지정된 속성 값을 쿼리하는 명령을 예약합니다.

반환 값: 약속

getText()

선행 또는 후행 공백 없이 하위 요소를 포함하여 이 요소의 가시적(CSS에 의해 숨겨지지 않음) innerText 을 가져옵니다.

반환 값: 약속

isEnabled()

이 인스턴스가 나타내는 DOM 요소가 disabled 속성에 따라 활성화되었는지 여부를 쿼리하는 명령을 예약합니다.

반환 값: 약속

isSelected()

이 요소가 선택되었는지 여부를 쿼리하는 명령을 예약합니다.

반환 값: 약속

submit()

이 요소(또는 이 요소가 FORM 요소인 경우 이 요소)가 포함된 양식을 제출하도록 명령을 예약합니다. 요소가 양식에 포함되지 않은 경우 이 명령은 작동하지 않습니다.

반환 값: 약속

clear()

이 요소의 값을 지우는 명령을 예약합니다.

반환 값: 약속

isDisplayed()

이 요소가 현재 표시되는지 여부를 테스트하는 명령을 예약합니다.

반환 값: 약속

ActionSequence: 여러 작업 연결

액션 시퀀스는 웹사이트와 복잡한 사용자 상호작용을 생성할 수 있습니다.

  • 새 작업 시퀀스를 만들려면 $webDriver.actions() 을 사용합니다.
  • 여러 작업을 하나의 시퀀스로 연결하려면 각각 뒤에 perform() 을 포함합니다. 이것은 단일 동작 시퀀스를 포함하여 개별 시퀀스를 실행한 다음 종료합니다.

다음 표에는 사용 가능한 작업 목록이 나와 있습니다. 자세한 내용 은 GitHub의 WebDriver ActionSequence 설명서를 참조하십시오.

함수

설명

click(opt_elementOrButton: ?, opt_button: ?)

마우스 버튼을 클릭합니다. 요소가 제공되면 마우스가 먼저 해당 요소의 중앙으로 이동합니다. 이는 WebElement.click() 과 동일합니다.

반환 값: actionsequence

doubleClick(opt_elementOrButton: ?, opt_button: ?)

마우스 버튼을 두 번 클릭합니다. 요소가 제공되면 마우스가 먼저 해당 요소의 중앙으로 이동합니다.

반환 값: actionsequence

dragAndDrop(element: ?, location: ?)

드래그 앤 드롭 조작을 수행하기 위한 편의 기능. 대상 요소는 다른 요소의 위치로 이동하거나 오프셋(픽셀 단위)만큼 이동할 수 있습니다. 위치는 xy {x: x_offset, y: y_offset} ) 두 가지 속성이 있는 객체입니다.

반환 값: actionsequence

keyDown(key: ?)

수정자 키 누름을 수행합니다. ALT , CONTROL , SHIFT , COMMAND 또는 META 중 하나여야 합니다. 수정자 키는 keyUp() 또는 sendKeys() 이 호출될 때까지 해제되지 않습니다. 키 누름은 현재 포커스가 있는 요소를 대상으로 합니다.

반환 값: actionsequence

keyUp(key: ?)

수정자 키 해제를 수행합니다. 릴리스는 현재 포커스가 있는 요소를 대상으로 합니다.

반환 값: actionsequence

press(opt_elementOrButton: ?, opt_button: ?)

마우스 버튼을 누릅니다. 이 순서로 호출되는지 다른 순서로 호출되는지에 관계없이 release 이 호출될 때까지 마우스 버튼은 해제되지 않습니다. 순서가 잘못된 이벤트의 동작(예: 버튼이 이미 눌려진 상태에서 press() 또는 click() 호출)은 정의되지 않습니다.

반환 값: actionsequence

release(opt_elementOrButton: ?, opt_button: ?)

마우스 버튼을 놓습니다. press() 에 대한 이전 호출 없이 이 함수를 호출하는 동작은 정의되지 않았습니다.

반환 값: actionsequence

move(location: ?, offset: ?)

마우스를 움직입니다. 이동할 위치는 마우스의 현재 위치, 요소의 왼쪽 상단 모서리에 상대적인 오프셋 또는 요소(이 경우 요소의 중간이 사용됨)로 지정할 수 있습니다.

반환 값: actionsequence

perform()

이 작업 시퀀스를 실행합니다.

반환 값: 약속

sendKeys(args: ?)

여러 키 입력을 시뮬레이션합니다. 시퀀스에서 발견된 각 수정자는 다시 만날 때까지 해제되지 않습니다. 모든 주요 이벤트는 현재 포커스가 있는 요소를 대상으로 합니다. 지원되는 영숫자가 아닌 키의 전체 목록은 GitHub의 WebDriver 열거형 키 설명서를 참조하세요.

반환 값: actionsequence

약속: 작업을 시퀀스에 연결

Promise에서 직접 함수를 실행할 수도 있습니다. 종합 모니터링은 기본 Node.js 환경이며 표준 Node.js 약속을 사용합니다.

이러한 함수는 약속의 상태를 평가하고 취소하는 등의 작업을 수행합니다. 특히 then() 함수와 그 형제 finally()catch() 를 사용하여 일련의 작업을 만들 수 있습니다. 자세한 내용은시퀀스 작업 을 참조하십시오.

.then 구문을 사용하여 약속 연결을 지원하는 것 외에도 이 런타임은 async-await 구문도 지원합니다.

함수

설명

isPending()

이 약속의 값이 아직 계산 중인지 여부입니다.

반환 값: 부울

then(opt_callback: fn(T: ?), opt_errback: fn())

이 인스턴스가 확인될 때 리스너를 등록합니다. 이것은 스크립트에서 동기 작업을 연결하는 데 사용되는 기본 기능입니다.

반환 값: 약속

finally(callback: fn())

프라미스의 값이 성공적으로 계산되었는지 여부에 관계없이 이 프라미스가 확인될 때 호출할 수신기를 등록합니다.

반환 값: 약속

catch(callback: fn())

이 약속이 거부될 때 리스너를 등록합니다.

반환 값: 약속

탐색: 브라우저 기록을 통해 이동

$webDriver.navigate() 함수는 브라우저 기록을 앞뒤로 이동하고, 페이지를 새로고침하고, 새 페이지로 이동할 수 있는 다양한 기능을 제공합니다.

함수

설명

조건: 일시 중지 및 조건 대기

공식 문서에서 Selenium의 wait에 대해 자세히 알아볼 수 있습니다.

$webDriver.wait , until 과 함께 사용하면 조건이 일치할 때까지 스크립트 실행이 일시 중지됩니다. 자세한 내용은 Selenium의 WebDriver until 설명서 를 참조하십시오.

다음은 $selenium.until.Condition 에 사용할 수 있는 기능입니다.

함수

설명

ableToSwitchToFrame(frame: ?)

입력 드라이버가 지정된 프레임으로 전환할 수 있을 때까지 기다리는 조건을 만듭니다. 대상 프레임은 다음과 같이 지정할 수 있습니다.

  • 현재 프레임에 대한 window.frames 에 대한 숫자 인덱스

  • 현재 페이지의 FRAME 또는 IFRAME 요소를 참조해야 하는 webdriver.WebElement

  • 전환을 시도하기 전에 현재 페이지에서 먼저 FRAME 또는 IFRAME 을(를) 찾는 데 사용할 수 있는 로케이터

    이 조건이 성공적으로 해결되면 드라이버는 새 프레임에 계속 초점을 맞춥니다.

    반환 값: 조건

alertIsPresent()

경고가 열리기를 기다리는 조건을 만듭니다. 성공하면 반환된 약속이 열린 경고에 대한 핸들로 이행됩니다.

반환 값: 조건

elementIsDisabled(element: $selenium.WebElement)

주어진 요소가 비활성화될 때까지 기다리는 조건을 만듭니다.

반환 값: 조건

elementIsEnabled(element: $selenium.WebElement)

주어진 요소가 활성화되기를 기다리는 조건을 만듭니다.

반환 값: 조건

elementIsNotVisible(element: $selenium.WebElement)

주어진 요소가 DOM에 있지만 사용자에게 표시되지 않을 때까지 기다리는 조건을 만듭니다.

반환 값: 조건

elementIsVisible(element: $selenium.WebElement)

주어진 요소가 표시될 때까지 기다리는 조건을 만듭니다.

반환 값: 조건

elementIsSelected(element: $selenium.WebElement)

주어진 요소가 선택되기를 기다리는 조건을 만듭니다.

반환 값: 조건

elementLocated(element: $selenium.Locator)

주어진 로케이터로 요소를 찾을 때까지 반복되는 조건을 만듭니다.

반환 값: 조건

elementsLocated(element: $selenium.Locator)

주어진 로케이터로 적어도 하나의 요소를 찾을 때까지 반복되는 조건을 생성합니다.

반환 값: 조건

N

elementTextContains(element: $selenium.WebElement, substr: string)

주어진 요소의 보이는 텍스트가 주어진 부분 문자열을 포함할 때까지 기다리는 조건을 생성합니다.

반환 값: 조건

elementTextIs(element: $selenium.WebElement, text: string)

대소문자를 구분합니다. 주어진 요소의 보이는 텍스트가 주어진 텍스트와 정확히 일치하기를 기다리는 조건을 만듭니다.

반환 값: 조건

N

elementTextMatches(element: $selenium.WebElement, regex: string)

주어진 요소의 보이는 텍스트가 정규식과 일치하기를 기다리는 조건을 만듭니다.

반환 값: 조건

stalenessOf(element: $selenium.WebElement)

주어진 요소가 부실해질 때까지 기다리는 조건을 만듭니다. 요소는 DOM에서 제거되거나 새 페이지가 로드되면 오래된 것으로 간주됩니다.

반환 값: 조건

titleContains(substr: string)

현재 페이지의 제목에 지정된 하위 문자열이 포함될 때까지 기다리는 조건을 만듭니다.

반환 값: 조건

titleIs(title: string)

현재 페이지의 제목이 주어진 값과 일치할 때까지 기다리는 조건을 만듭니다.

반환 값: 조건

titleMatches(regex: string)

현재 페이지의 제목이 주어진 정규식과 일치할 때까지 기다리는 조건을 만듭니다.

반환 값: 조건

고급 예제

다음 예에서는 코드를 기능 섹션(상수, 의존성/종속성, 설정, 페이지 요소, 함수 및 펼쳐보기 시작)으로 구분합니다. 다음을 수행할 수 있는 방법을 보여줍니다.

  • 더 나은 성능을 위해 오류 기간을 최소화하도록 시간 초과를 구성합니다.
  • CSS 또는 ID로 요소를 찾습니다.
  • waitForAndFindElement 정의합니다.
  • console.log() 사용하여 스크립트 로그를 구성하고 어설션 실패 또는 시간 초과 문제를 찾아냅니다.
  • 실패 단계를 식별하는 유용한 오류 메시지를 발생시키는 try/catch 블록을 사용하여 오류를 처리합니다.
  • 스크립트 전체를 비동기 함수 내부에서 실행하므로 최상위 수준 await 을 사용할 수 있습니다.
/**
* Script Name: Advanced Example
* Author: New Relic
* Version: 1.6
*/
// -------------------- CONSTANTS
const SCRIPT_NAME = "Best Practices - Chrome 100" // name to record in script log
const IMPLICIT_TIMEOUT = 3000 // default implicit timeout is 10 seconds
const PAGE_LOAD_TIMEOUT = 60000 // default page load timeout is 60 seconds, fail early to prevent long duration timeouts
const SCRIPT_TIMEOUT = 20000 // default script timeout is 30 seconds
const USER_AGENT = "default" // set the user agent for Chrome
const PROTOCOL = "https://" // set the protocol
const USERNAME = "" // username:
const PASSWORD = "" // password@
const DOMAIN = "docs.newrelic.com" // your domain
const PATH = "/docs/new-relic-solutions/get-started/intro-new-relic/" // path to main page
const CHECK = "Get started with New Relic" // text to match on page
const AUTH = USERNAME + PASSWORD // could be stored as secure credentials
const MAIN_URL = PROTOCOL + AUTH + DOMAIN + PATH
// -------------------- DEPENDENCIES
const assert = require("assert")
// -------------------- CONFIGURATION
await $webDriver.manage().setTimeouts({
implicit: IMPLICIT_TIMEOUT, // sets element load timeout
pageLoad: PAGE_LOAD_TIMEOUT, // sets page load timeout
script: SCRIPT_TIMEOUT // sets script timeout
})
// -------------------- ELEMENTS
const By = $selenium.By
const loc = {
title: By.css("#gatsby-focus-wrapper > div.css-1uz5ayg > div > main > div > h1"),
start: [
{ step: 'signup', selector: By.id("sign-up-for-new-relic-if-you-havent-already") },
{ step: 'add', selector: By.id("add-your-data") },
{ step: 'explore', selector: By.id("explore-your-data") },
{ step: 'query', selector: By.id("query-your-data") },
{ step: 'dashboard', selector: By.id("set-up-a-dashboard") },
{ step: 'alerts', selector: By.id("configure-alerts") }
]
}
// -------------------- FUNCTIONS
// for backwards compatibility with legacy runtimes
async function waitForAndFindElement(locator, timeout) {
const element = await $webDriver.wait(
$selenium.until.elementLocated(locator),
timeout,
"Timed-out waiting for element to be located using: " + locator
)
await $webDriver.wait(
$selenium.until.elementIsVisible(element),
timeout,
"Timed-out waiting for element to be visible using ${element}"
)
return await $webDriver.findElement(locator)
}
// -------------------- START OF SCRIPT
// Start logging
const start_time = new Date()
console.log("Starting synthetics script: " + SCRIPT_NAME)
// confirm timeouts are set
const {implicit, pageLoad, script} = await $webDriver.manage().getTimeouts()
console.log("Timeouts are set to:")
console.log(" IMPLICIT: " + implicit / 1000 + "s")
console.log(" PAGE LOAD: " + pageLoad / 1000 + "s")
console.log(" SCRIPT: " + script / 1000 + "s")
// Setting User Agent is not then-able, so we do this first (if defined and not default)
if (USER_AGENT && 0 !== USER_AGENT.trim().length && USER_AGENT != "default") {
$headers.add("User-Agent", USER_AGENT)
console.log("Setting User-Agent to " + USER_AGENT)
}
// if an error happens at any step, script execution is halted and a failed result is returned
console.log("1. get: " + MAIN_URL)
await $webDriver.get(MAIN_URL)
console.log("2. waitForAndFindElement: " + loc.title)
const textBlock = await waitForAndFindElement(loc.title, IMPLICIT_TIMEOUT)
console.log("3. getText: " + CHECK)
const text1 = await textBlock.getText()
console.log("4. assert.equal: " + text1)
assert.equal(text1, CHECK, "title validation text not found")
console.log("5. takeScreenshot")
await $webDriver.takeScreenshot()
console.log("6. findElement")
loc.start.forEach(async function (nr, i) {
let n = i + 1
try{
// verify each asset has loaded
console.log(" " + n + ". " + nr.step + ": " + nr.selector)
await $webDriver.findElement(nr.selector)
}catch(exception){
console.error("Failure in Step 6." + n)
throw exception
}
})
// End logging
const end_time = new Date()
// Calculate the duration
const script_duration = (end_time - start_time) / 1000
// Log the times
console.log("Start time: " + start_time)
console.log("End time: " + end_time)
console.log("Duration: " + script_duration + "s")

Shadow DOM: 요소 찾기

런타임은 새로운 셀레니엄 웹 드라이버 메서드 getShadowRoot()를 사용하여 Shadow DOM 요소에 액세스하는 것도 지원합니다.

  1. findElement 또는 유사한 최상위 함수 를 사용하여 섀도우 호스트를 찾습니다. 이것은 shadow-root가 마운트되는 요소입니다.
  2. 1단계에서 찾은 요소에서 getShadowRoot() 메서드를 사용하여 섀도우 루트를 가져옵니다.
  3. 섀도우 루트를 사용하여 이제 findElement 또는 유사한 기능을 사용하여 섀도우 루트 내부의 요소를 찾을 수 있습니다. 여러 수준의 shadow DOM이 사용되는 경우 상호 작용해야 하는 요소가 포함된 shadow 루트 개체에 액세스할 때까지 이러한 단계를 반복해야 합니다.

Chrome은 섀도우 루트 개체 내에서 XPath 로케이터 사용을 지원하지 않습니다. 다른 로케이터 옵션 을 사용하여 섀도우 루트 개체 내부의 요소를 찾습니다.

예시:

// Find the shadow host
let myShadowHost = await $webDriver.findElement($selenium.By.id('exampleShadowHost'));
// Get the shadow root
let myShadowRoot = await myShadowHost.getShadowRoot();
// Interact with an element inside the shadow root
let el = await myShadowRoot.findElement($selenium.By.id('myButton'));
await el.click();
Copyright © 2024 New Relic Inc.

This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.