Selenium의 XPath: 찾고 쓰는 방법? (텍스트, 포함, AND)

Selenium의 XPath는 무엇입니까?

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

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

이 튜토리얼에서는 com을 찾기 위한 Xpath와 다양한 XPath 표현식에 대해 알아봅니다.plex 또는 새로 고침이나 작업 시 속성이 동적으로 변경되는 동적 요소입니다.

XPath 구문

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

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

Selenium의 XPath 기본 형식은 스크린샷과 함께 아래에 설명되어 있습니다.

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

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

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

X-경로의 유형

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

1) 절대 XPath

2) 상대 XPath

절대 XPath

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

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

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

참고: 다음을 연습할 수 있습니다.wing 이에 대한 XPath 연습 http://demo.guru99.com/test/selenium-xpath.html

여기를 눌러 더 많은 정보를 찾으세요. 비디오에 접근할 수 없는 경우

절대 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 구조의 중간부터 시작됩니다. 그것은로 시작한다 double 슬래시(//). 웹페이지 어디에서나 요소를 검색할 수 있으므로 긴 xpath를 작성할 필요가 없으며 HTML DOM 구조의 중간에서 시작할 수 있습니다. 상대 Xpath는 루트 요소의 완전한 경로가 아니기 때문에 항상 선호됩니다.

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

여기를 눌러 더 많은 정보를 찾으세요. 비디오에 접근할 수 없는 경우

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

상대 XPath

상대 XPath

XPath 축이란 무엇입니까?

XPath 축은 현재 컨텍스트 노드에서 XML 문서의 다른 노드를 검색합니다. XPath 축은 동적 요소를 찾는 데 사용되는 방법입니다.wise ID, 클래스 이름, 이름 등이 없는 일반 XPath 방법으로는 불가능합니다.

Axes 메서드는 새로 고침이나 기타 작업 시 동적으로 변경되는 요소를 찾는 데 사용됩니다. 일반적으로 사용되는 축 방법은 거의 없습니다. 셀레늄 웹 드라이버 자식, 부모, 조상, 형제자매, 선행, 자기 등과 같은 것입니다.

Selenium WebDriver에서 동적 XPath를 작성하는 방법

1) 기본 XPath

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

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

페이지에 액세스할 수 있는 링크는 다음과 같습니다. http://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='http://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() 함수

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

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

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

XPath 텍스트() 함수

XPath 축 메서드

이러한 XPath 축 방법은 com을 찾는 데 사용됩니다.plex 또는 동적 요소. 아래에서는 이러한 방법 중 일부를 살펴보겠습니다.

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

1) 폴로wing

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

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

FOLLOwing

"follo"를 사용하여 일치하는 "입력" 노드가 3개 있습니다.wing” 축 - 비밀번호, 로그인 및 재설정 버튼. 특정 요소에 집중하려면 아래 XPath 방법을 사용할 수 있습니다.

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

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

입력이 '1'인 경우 아래 스크린샷은 'Password' 입력인 특정 노드를 찾습니다. box 요소입니다.

FOLLOwing

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) 폴로wing-형제자매

팔로우를 선택하세요wing 컨텍스트 노드의 형제입니다. 형제는 아래 화면에 표시된 것처럼 현재 노드와 동일한 수준에 있습니다. 현재 노드 다음의 요소를 찾습니다.

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

FOLLOwing-형제자매

"follo"를 사용하여 일치하는 하나의 입력 노드wing-형제”축.

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 축은 동적 요소를 찾는 데 사용되는 방법입니다.wise 일반적인 XPath 방법으로는 찾을 수 없습니다.
  • XPath 표현식은 XML 문서의 ID, 이름, 클래스 이름 등과 같은 속성을 기반으로 노드 또는 노드 목록을 선택합니다.

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