XPath Path Expression 문법
참조: http://www.w3schools.com/XPath/xpath_syntax.asp
자주쓰는 표현식
노드이름: 해당 이름의 모든 하위 노드를 선택한다.
/: 최상위 노드에서부터 선택한다.
//: 현재 문서에서 해당 노드에 대응하는 모든 모드를 (위치에 상관없이)선택한다.
.: 현재 노드를 선택한다.
..: 현재 노드의 상위 노드를 선택한다.
@: 속성을 선택한다.
와일드 카드
*: 모든 엘리먼트 노드
@*: 모든 속성 노드
node(): 모든 종류의 노드
<bookstore>
<book>
<title lang="eng">Harry Potter</title>
<price>29.99</price>
</book>
<book>
<title lang="eng">Learning XML</title>
<price>39.95</price>
</book>
</bookstore>
표현식 사용 예제
bookstore: bookstore 엘리먼트의 모든 하위 노드를 선택한다.
/bookstore: bookstore를 선택한다.
//bock: 모든 book 엘리먼트를 선택한다.
bookstore//book: bookstrore 하위에 있는 book 엘리먼트를 선택한다.
//@lang: 모든 lang 속성을 선택한다.
/bookstore/book[1]: bookstore 하위의 book 엘리먼트 중에 첫 번째 것을 선택한다.(IE5는 0이 첫 번째 것을 가리키는데 W3C 표준은 1이 맞다.)
/bookstore/book[last()]: bookstore 하위의 book 엘리먼트 중에 마지막 것을 선택한다.
/bookstore/book[last()-1]: 마지막에서 하나 전 것을 선택한다.
/bookstore/book[position()<3]: 처음 두 개를 선택한다.
//title[@lang]: lang이라는 속성을 가진 모든 title을 선택한다.
//title[@lang='eng']: lang 속성의 값이 eng인 모든 title을 선택한다.
/bookstore/book[price>35.00]: price 엘리먼트의 값이 35보다 큰 (bookstore 하위의) book을 선택한다.
/bookstore/book[price>35.00]/title: price 엘리먼트의 값이 35보다 큰 (bookstore 하위의) book의 title을 선택한다.
와일드 카드 사용 예제
/bookstore/*: bookstore 하위의 모든 엘리먼트를 선택한다.
//*: 문서에 있는 모든 엘리먼트를 선택한다.
//title[@*]: 어떤 속성이라도 가지고 있는 title 엘리먼트를 선택한다.
표현식 연산자 |
//book/title | //book/price: book에 있는 모든 title과 price 엘리먼트를 선택한다.
//title | //price: 문서에 있는 모든 title과 price를 선택한다.
/bookstore/book/title | //price: bookstore에 있는 book에 있는 모든 title과 문서에 있는 모든 price를 선택한다.
Webdriver에서 xpath를 사용하여 엘리먼트를 선택할 수 있는 기능을 제공함.
예) submit = driver.findElement(By.xpath("//input[@type='submit']"));