메뉴 여닫기
개인 메뉴 토글
로그인하지 않음
만약 지금 편집한다면 당신의 IP 주소가 공개될 수 있습니다.

Selenium xpath

DB CAFE
Dbcafe (토론 | 기여)님의 2024년 10월 1일 (화) 22:37 판 (새 문서: == Xpath 개요 == Selenium WebDriver를 사용하여 웹 애플리케이션을 자동화 할 때 가장 어려운 작업 중 하나는 웹 요소를 찾는 것입니다. {{틀:고지 상자 |내용= Selenium WebDriver 에서 요소(Element)를 찾는 로케이터(Locator) # Id # CSS # XPATH # Class Name # Name # Tag Name # Links Text # Partial Links Text |아이콘=filter_3 }} === XPath 란? === {{틀:고지 상자 |내용='''XPATH''' # XML 경로 언어 인 XPath는 XML 문...)
(차이) ← 이전 판 | 최신판 (차이) | 다음 판 → (차이)

Xpath 개요

Selenium WebDriver를 사용하여 웹 애플리케이션을 자동화 할 때 가장 어려운 작업 중 하나는 웹 요소를 찾는 것입니다. 틀:고지 상자

XPath 란?

틀:고지 상자

XPath 표현식

절대경로 (Absolute Path)

틀:고지 상자

  1. 예시
/html/body/div[2]/div/div[4]/div/ul/li[3]/a/span

상대경로 (Relative Path)

틀:고지 상자

//div[@id='navigation']/ul/li[3]/a/span

슬래쉬 “/” 와 "//" 의미

틀:고지 상자

  1. 두가지 예시 참조
  2. 예시 1)
.//div[@id='products']/a/img
    1. 'a' 태그의 하위 인 html 문서에서 이미지 태그를 찾으려고합니다.
    2. 그리고 a 태그는 div 태그의 자식입니다.
    3. 동일한 img 태그는 다음에서 찾을 수 있습니다.
  1. 예시 2)
.//div[@id='products']//img

점 “.” 와 “..” 의미

틀:고지 상자

  1. 예시)
.//div[@id='products']/..
  • 위 표현식은 현재 노드의 부모 노드를 찾습니다.

"@”의 의미

틀:고지 상자

" * " 의 의미

틀:고지 상자

  1. 예시 )
.//*[text()='Home']
.//a[@*='Home']
  • 이 경우 값이 'home'인 속성을 가진 요소를 찾으려고합니다.
  • 이 경우 속성 이름은 신경 쓰지 않습니다.

형제/자식/조상 요소 찾기

현재노드의 태그가 닫힐때까지의 모든 노드 "Following"

틀:고지 상자 Pasted-into-XPath-in-Selenium-The-Most-Complete-Guide-2021-Update-10-1024x393.png


현재 노드의 형제 노드 "Following-sibling"

틀:고지 상자

Child

틀:고지 상자 Pasted-into-XPath-in-Selenium-The-Most-Complete-Guide-2021-Update-11-1024x335.png

또한 아래와 같이 section [1], section [2], section [3] 등의 구문을 사용하여 필요한 "section"요소를 선택할 수 있습니다.

Pasted-into-XPath-in-Selenium-The-Most-Complete-Guide-2021-Update-12.png

Preceding

틀:고지 상자

Pasted-into-XPath-in-Selenium-The-Most-Complete-Guide-2021-Update-13.png

Ancestor

틀:고지 상자

Pasted-into-XPath-in-Selenium-The-Most-Complete-Guide-2021-Update-9.png

  1. //section[@id=’content’]//ancestor::div[1] – Returns 53 nodes
  2. //section[@id=’content’]//ancestor::div[2]- Returns 33 nodes
  3. //section[@id=’content’]//ancestor::div[3] – Returns 24 nodes
  4. //section[@id=’content’]//ancestor::div[4]- Returns 19 nodes
Descendant

틀:고지 상자


descendant.png

Parent

틀:고지 상자


parent-selector-tactic-in-selenium.png


XPath 유용한 팁

  1. 대부분의 경우 로케이터의 속성이 동적으로 생성 될 때 문제가 발생합니다.
    그리고 지금은 거의 모든 웹 애플리케이션이이 전략을 따르고 있습니다.
“contains” 키워드
  1. "contains ()"는 속성이름과 속성 값 , 두 개의 인수를받는 함수입니다.
.//div[contains(@id, 'search')]
  • 'search' 값이 포함 된 'id'라는 속성이 포함 된 div 태그를 찾습니다.
  • 정확히 'search'일 필요는 없지만 패턴이 일치해야합니다.
  • 함수‘contains ()’는 패턴을 일치시켜 속성 이름을 값과 일치시킵니다.
  1. 다음은‘contains ()’함수의 또 다른 사용법
.//span[contains(text(), 'Hot')]
  • 이 표현식은 텍스트로 'Hot'이 포함 된 span 태그를 찾습니다.
  • 키워드 "text ()"를 사용한 표현식 :
  • 앞에서 본 예에서는‘text ()’함수를 사용했습니다.
  1. 'text ()’함수의 특정 텍스트가있는 특정 태그를 찾습니다.
.//span[text()= 'Home']

Pasted-into-XPath-in-Selenium-The-Most-Complete-Guide-2021-Update-7-1024x491.png

“starts-with()”키워드
  1. starts-with ()’ 속성 이름과 속성값 이라는 두 개의 인수를 사용합니다
.//div[starts-with(@class, 'width')]
  • 여기서는 'width'로 시작하는 'class'속성이있는 div 태그를 찾음.
  1. 다른 예시:
.//span[starts-with(text(), 'Gift')]
  1. 'contains ()’함수처럼 'text ()'함수를 사용하여 태그 안의 텍스트를 찾았습니다. 'starts-with ()'함수를 사용하여 수행 할 수도 있습니다.

Pasted-into-XPath-in-Selenium-The-Most-Complete-Guide-2021-Update-8-1024x465.png