XPath를 사용하는 방법 Selenium? 지도 시간

XPath란 무엇입니까? Selenium?

XPath 입력 Selenium 페이지의 HTML 구조를 탐색하는 데 사용되는 XML 경로입니다. XML 경로 표현을 사용하여 웹 페이지에서 요소를 찾는 구문 또는 언어입니다. XPath는 HTML 및 XML 문서 모두에 사용되어 HTML DOM 구조를 사용하여 웹페이지에 있는 모든 요소의 위치를 ​​찾을 수 있습니다.

In Selenium 자동화, ID, 클래스, 이름 등과 같은 일반 로케이터로 요소를 찾을 수 없는 경우 XPath를 사용하여 웹 페이지에서 요소를 찾습니다.

이 튜토리얼에서는 Xpath와 다양한 XPath 표현식을 사용하여 새로 고침이나 다른 작업 시에 속성이 동적으로 변경되는 복잡하거나 동적 요소를 찾는 방법에 대해 알아봅니다.

XPath 구문

XPath에는 웹 페이지에 있는 요소의 경로가 포함되어 있습니다. XPath를 생성하기 위한 표준 XPath 구문은 다음과 같습니다.

Xpath=//tagname[@attribute='value']

아래는 셀레늄에서 XPath의 기본 형식을 스크린샷과 함께 설명합니다.

XPath 구문
XPath의 기본 형식
  • // : 현재 노드를 선택합니다.
  • 태그 이름: 특정 노드의 태그 이름입니다.
  • @: 속성을 선택하세요.
  • 속성 : 노드의 속성 이름입니다.
  • 값 : 속성의 값입니다.

웹페이지에서 요소를 정확하게 찾으려면 다양한 유형의 로케이터가 있습니다.

XPath 로케이터 웹 페이지에서 다른 요소 찾기
ID 요소의 ID로 요소를 찾으려면
클래스 이름 요소의 Classname으로 요소를 찾으려면
성함 요소 이름으로 요소를 찾으려면
링크 텍스트 링크의 텍스트로 요소를 찾으려면
xpath 동적 요소를 찾고 웹 페이지의 다양한 요소 간을 탐색하는 데 필요한 XPath
CSS 경로 CSS 경로는 이름, 클래스 또는 ID가 없는 요소도 찾습니다.

X-경로의 유형

XPath에는 두 가지 유형이 있습니다.

1) 절대 XPath

2) 상대 XPath

절대 XPath

이는 요소를 찾는 직접적인 방법이지만 절대 XPath의 단점은 요소 경로가 변경된 경우 XPath가 실패한다는 것입니다.

XPath의 주요 특징은 단일 슬래시(/)로 시작한다는 것입니다. 이는 루트 노드에서 요소를 선택할 수 있음을 의미합니다.

다음은 아래 화면에 표시된 요소의 절대 Xpath 표현식의 예입니다.

참고: 다음 XPath 연습은 이것으로 연습할 수 있습니다. https://demo.guru99.com/test/selenium-xpath.html

LINK 비디오에 접근할 수 없는 경우

절대 XPath:

/html/body/div[2]/div[1]/div/h4[1]/b/html[1]/body[1]/div[2]/div[1]/div[1]/h4[1]/b[1]

절대 XPath
절대 XPath

상대 Xpath

상대 Xpath HTML DOM 구조의 중간에서 시작합니다. 이중 슬래시(//)로 시작합니다. 웹페이지의 어느 곳에서나 요소를 검색할 수 있으므로 긴 xpath를 작성할 필요가 없으며 HTML DOM 구조의 중간에서 시작할 수 있습니다. 상대적 Xpath는 루트 요소에서 완전한 경로가 아니므로 항상 선호됩니다.

다음은 아래 화면에 표시된 동일한 요소의 상대 XPath 표현식의 예입니다. 이는 XPath로 요소를 찾는 데 사용되는 일반적인 형식입니다.

LINK 비디오에 접근할 수 없는 경우

Relative XPath: //div[@class='featured-box cloumnsize1']//h4[1]//b[1]

상대 XPath
상대 XPath

XPath 축이란 무엇입니까?

XPath 축은 현재 컨텍스트 노드를 기준으로 XML 문서의 여러 노드를 검색합니다. XPath 축은 ID, 클래스 이름, 이름 등이 없는 일반 XPath 메서드로는 찾을 수 없는 동적 요소를 찾는 데 사용되는 메서드입니다. Selenium 다양한 속성과 조건에 따라 동적 요소를 식별하고 찾기 위해 Contains, AND, Absolute XPath, Relative XPath와 같은 여러 가지 방법이 포함됩니다.

축 메서드는 새로 고침이나 다른 작업에서 동적으로 변경되는 요소를 찾는 데 사용됩니다. 일반적으로 사용되는 축 메서드는 몇 가지가 있습니다. Selenium 웹드라이버 자식, 부모, 조상, 형제자매, 선행, 자기 등과 같은 것입니다.

동적 XPath를 작성하는 방법 Selenium 웹드라이버

1) 기본 XPath

XPath 표현식은 다음과 같은 속성을 기반으로 노드 또는 노드 목록을 선택합니다. ID, 이름, 클래스명, 등을 아래 그림과 같이 XML 문서에서 가져옵니다.

Xpath=//input[@name='uid']

페이지에 액세스할 수 있는 링크는 다음과 같습니다. https://demo.guru99.com/test/selenium-xpath.html

기본 XPath
기본 XPath

좀 더 기본적인 xpath 표현:

Xpath=//input[@type='text']
Xpath=//label[@id='message23']
Xpath=//input[@value='RESET']
Xpath=//*[@class='barone']
Xpath=//a[@href='https://demo.guru99.com/']
Xpath=//img[@src='//guru99.com/images/home/java.png']

2) 포함()

Contains()는 XPath 표현에 사용되는 메서드입니다. 이는 로그인 정보와 같이 속성 값이 동적으로 변경될 때 사용됩니다.

포함 기능에는 아래 XPath 예제와 같이 부분 텍스트가 있는 요소를 찾는 기능이 있습니다.

이 예에서는 속성의 일부 텍스트 값만 사용하여 요소를 식별하려고 했습니다. 아래 XPath 표현식에서는 제출 버튼 대신 부분 값 'sub'가 사용되었습니다. 요소가 성공적으로 발견된 것을 확인할 수 있습니다.

'Type'의 전체 값은 'submit'이지만 부분 값 'sub'만 사용합니다.

Xpath=//*[contains(@type,'sub')]

'name'의 전체 값은 'btnLogin'이지만 부분 값 'btn'만 사용합니다.

Xpath=//*[contains(@name,'btn')]

위 표현식에서는 아래 스크린샷과 같이 'name'을 속성으로, 'btn'을 부분 값으로 사용했습니다. 'name' 속성이 'btn'으로 시작하므로 2개의 요소(LOGIN 및 RESET)를 찾습니다.

포함()

마찬가지로 아래 표현식에서는 'id'를 속성으로, 'message'를 부분 값으로 사용했습니다. 'id' 속성이 'message'로 시작하므로 2개의 요소('User-ID는 비워둘 수 없습니다.' 및 'Password는 비워둘 수 없습니다.')를 찾습니다.

Xpath=//*[contains(@id,'message')]

포함()

아래 표현식에서는 아래 스크린샷과 같이 링크의 "텍스트"를 속성으로, '여기'를 부분 값으로 사용했습니다. 그러면 '여기'라는 텍스트가 표시되므로 링크('여기')를 찾습니다.

Xpath=//*[contains(text(),'here')]
Xpath=//*[contains(@href,'guru99.com')]

포함()

3) OR & AND 사용

OR 표현식에서는 첫 번째 조건 OR 두 번째 조건이 참이어야 하는지 두 가지 조건을 사용합니다. 하나의 조건이 참이거나 둘 다일 수도 있는 경우에도 적용 가능합니다. 요소를 찾으려면 하나의 조건이 참이어야 함을 의미합니다.

아래 XPath 표현식에서는 단일 조건 또는 두 조건 모두가 true인 요소를 식별합니다.

Xpath=//*[@type='submit' or @name='btnReset']

두 요소를 모두 'type' 속성이 있는 "LOGIN" 요소와 'name' 속성이 있는 "RESET" 요소로 강조 표시합니다.

OR 및 AND 사용

AND 표현식에서는 두 가지 조건이 사용되며 두 조건이 모두 true여야 요소를 찾을 수 있습니다. 조건 중 하나라도 거짓이면 요소를 찾을 수 없습니다.

Xpath=//input[@type='submit' and @name='btnLogin']

아래 표현식에서는 'type'과 'name' 속성이 모두 있는 'LOGIN' 요소를 강조 표시합니다.

OR 및 AND 사용

4) Xpath 시작

XPath는()로 시작합니다. 새로 고침 시 또는 웹페이지의 다른 동적 작업으로 인해 속성 값이 변경되는 웹 요소를 찾는 데 사용되는 함수입니다. 이 방법에서는 속성의 시작 텍스트를 일치시켜 속성 값이 동적으로 변경되는 요소를 찾습니다. 속성 값이 정적(변경되지 않음)인 요소를 찾을 수도 있습니다.

예: 특정 요소의 ID가 다음과 같이 동적으로 변경된다고 가정합니다.

아이디=” 메시지12″

아이디=” 메시지345″

아이디=” 메시지8769″

등등.. 하지만 초기 텍스트는 동일합니다. 이 경우 Start-with 표현식을 사용합니다.

아래 표현식에는 "메시지"로 시작하는 ID를 가진 두 개의 요소가 있습니다(즉, '사용자 ID는 비워둘 수 없습니다.' 및 '비밀번호는 비워둘 수 없습니다'). 아래 예에서 XPath는 'ID'가 'message'로 시작하는 요소를 찾습니다.

Xpath=//label[starts-with(@id,'message')]

Xpath 시작

5) XPath Text() 함수

The XPath 텍스트() 함수 는 웹 요소의 텍스트를 기반으로 요소를 찾는 데 사용되는 Selenium WebDriver의 내장 함수입니다. 정확한 텍스트 요소를 찾는 데 도움이 되며 텍스트 노드 집합 내에서 요소를 찾습니다. 찾을 요소는 문자열 형식이어야 합니다.

이 표현식에서는 텍스트 함수를 사용하여 아래와 같이 정확히 텍스트가 일치하는 요소를 찾습니다. 우리의 경우 "UserID"라는 텍스트가 있는 요소를 찾습니다.

Xpath=//td[text()='UserID']

XPath 텍스트() 함수

XPath 축 메서드

이러한 XPath 축 방법은 복잡하거나 동적인 요소를 찾는 데 사용됩니다. 아래에서 이러한 방법 중 일부를 살펴보겠습니다.

이러한 XPath 축 방법을 설명하기 위해 Guru99 은행 데모 사이트를 사용합니다.

1) 다음

아래 화면과 같이 현재 노드( )의 문서에 있는 모든 요소를 ​​선택합니다. [ UserID 입력 상자가 현재 노드입니다.]

Xpath=//*[@type='text']//following::input

수행원

"다음" 축(비밀번호, 로그인 및 재설정 버튼)을 사용하여 일치하는 3개의 "입력" 노드가 있습니다. 특정 요소에 초점을 맞추고 싶다면 아래 XPath 방법을 사용할 수 있습니다.

Xpath=//*[@type='text']//following::input[1]

[1],[2]…………등을 입력하여 요구 사항에 따라 XPath를 변경할 수 있습니다.

'1'을 입력하면 아래 스크린샷은 '비밀번호' 입력 상자 요소인 특정 노드를 찾습니다.

수행원

2) 조상

조상 축은 아래 화면과 같이 현재 노드의 모든 조상 요소(조부모, 부모 등)를 선택합니다.

아래 표현식에서는 현재 노드(“ENTERPRISE TESTING” 노드)의 상위 요소를 찾습니다.

Xpath=//*[text()='Enterprise Testing']//ancestor::div

선조

"ancestor" 축을 사용하여 일치하는 13개의 "div" 노드가 있습니다. 특정 요소에 집중하려면 아래 XPath를 사용하여 요구 사항에 따라 숫자 1, 2를 변경할 수 있습니다.

Xpath=//*[text()='Enterprise Testing']//ancestor::div[1]

[1], [2]…………등을 입력하여 요구 사항에 따라 XPath를 변경할 수 있습니다.

3) 어린이

현재 노드의 모든 하위 요소를 선택합니다(Java) 아래 화면과 같습니다.

Xpath=//*[@id='java_technologies']//child::li

아동

"자식" 축을 사용하여 일치하는 71개의 "li" 노드가 있습니다. 특정 요소에 집중하려면 아래 xpath를 사용할 수 있습니다.

Xpath=//*[@id='java_technologies']//child::li[1]

[1],[2]…………등을 입력하여 요구 사항에 따라 xpath를 변경할 수 있습니다.

4) 선행

아래 화면과 같이 현재 노드 앞에 오는 모든 노드를 선택합니다.

아래 표현식에서는 "LOGIN" 버튼 이전의 모든 입력 요소를 식별합니다. 사용자 ID 그리고 암호 입력 요소.

Xpath=//*[@type='submit']//preceding::input

선행

"선행" 축을 사용하여 일치하는 2개의 "입력" 노드가 있습니다. 특정 요소에 집중하려면 아래 XPath를 사용할 수 있습니다.

Xpath=//*[@type='submit']//preceding::input[1]

[1],[2]…………등을 입력하여 요구 사항에 따라 xpath를 변경할 수 있습니다.

5) 형제 자매

컨텍스트 노드의 다음 형제를 선택합니다. 형제는 아래 화면에 표시된 대로 현재 노드와 같은 수준에 있습니다. 현재 노드 다음에 있는 요소를 찾습니다.

xpath=//*[@type='submit']//following-sibling::input

다음 형제

"팔로잉 형제" 축을 사용하여 일치하는 하나의 입력 노드.

6) 부모

아래 화면에 표시된 대로 현재 노드의 상위를 선택합니다.

Xpath=//*[@id='rt-feature']//parent::div

부모의

"상위" 축을 사용하여 일치하는 65개의 "div" 노드가 있습니다. 특정 요소에 집중하려면 아래 XPath를 사용할 수 있습니다.

Xpath=//*[@id='rt-feature']//parent::div[1]

[1],[2]…………등을 입력하여 요구 사항에 따라 XPath를 변경할 수 있습니다.

7) 자기

현재 노드를 선택하거나 'self'는 아래 화면과 같이 노드 자체를 나타냅니다.

셀프

"self" 축을 사용하여 하나의 노드 일치. 자체 요소를 나타내므로 항상 하나의 노드만 찾습니다.

Xpath =//*[@type='password']//self::input

8) 후손

아래 화면과 같이 현재 노드의 자손을 선택합니다.

아래 표현식에서는 노드(하위 노드, 손자 노드 등) 아래를 의미하는 현재 요소('본체 서라운드' 프레임 요소)의 모든 하위 요소를 식별합니다.

Xpath=//*[@id='rt-feature']//descendant::a

후손

"하위" 축을 사용하여 일치하는 12개의 "링크" 노드가 있습니다. 특정 요소에 집중하려면 아래 XPath를 사용할 수 있습니다.

Xpath=//*[@id='rt-feature']//descendant::a[1]

[1],[2]…………등을 입력하여 요구 사항에 따라 XPath를 변경할 수 있습니다.

제품 개요

XPath는 웹 페이지에서 요소를 찾아 해당 특정 요소에 대한 작업을 수행하는 데 필요합니다.

  • 셀레늄 XPath에는 두 가지 유형이 있습니다.
    • 절대 XPath
    • 상대 XPath
  • XPath 축은 일반적인 XPath 방법으로는 찾을 수 없는 동적 요소를 찾는 데 사용되는 방법입니다.
  • XPath 표현식은 XML 문서의 ID, 이름, 클래스 이름 등과 같은 속성을 기반으로 노드 또는 노드 목록을 선택합니다.

또한 확인:- Selenium 초보자를 위한 튜토리얼: 7일 만에 WebDriver 배우기