본문 바로가기
python3 selenium

Xpath Axes

by Pymac 2023. 12. 9.
반응형

1. ancestor(선조): 현재 노드보다 상위 레벨의 노드를 선택.
2. ancestor-or-self(자신을 포함한 선조): 현재 노드와 상위 레벨의 노드를 모두 선택.
3. attribute(속성): 현재 요소 노드의 속성 노드를 선택.
4. child(자식): 현재 요소 노드의 자식 노드를 선택.
5. descendant(하위): 현재 요소 노드의 하위 노드를 선택.
6. descendant-or-self(자신을 포함한 하위): 현재 요소 노드와 하위 노드를 모두 선택.
7. following(현재 노드 이후의 모든 노드): 현재 노드 이후의 모든 노드를 선택.
8. following-sibling(다음 형제 노드): 현재 노드의 다음 형제 노드를 선택.
9. parent(부모): 현재 노드의 부모 노드를 선택.

아래는 주어진 XPath 예제 코드에 적용될 수 있는 예제 HTML 코드입니다:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>XPath Example</title>
</head>
<body>
    <div class="parent">
        <p>First child</p>
        <p>Second child</p>
        <p>Third child</p>
    </div>
    <div class="sibling">Sibling div</div>
    <div class="child">
        <p>Child paragraph</p>
    </div>
</body>
</html>


# 1. 자식 요소 선택
element = driver.find_element_by_xpath("//div[@class='parent']/child::p")

# 2. 자식 요소 중 첫 번째 요소 선택
element = driver.find_element_by_xpath("//div[@class='parent']/child::p[1]")

# 3. 자식 요소 중 마지막 요소 선택
element = driver.find_element_by_xpath("//div[@class='parent']/child::p[last()]")

# 4. 자식 요소 중 n번째 요소 선택
element = driver.find_element_by_xpath("//div[@class='parent']/child::p[3]")

# 5. 자식 요소 중 첫 번째와 마지막 요소 선택
element = driver.find_element_by_xpath("//div[@class='parent']/child::p[position()=1 or position()=last()]")

# 6. 형제 요소 선택
element = driver.find_element_by_xpath("//div[@class='parent']/following-sibling::div")

# 7. 형제 요소 중 첫 번째 요소 선택
element = driver.find_element_by_xpath("//div[@class='parent']/following-sibling::div[1]")

# 8. 형제 요소 중 마지막 요소 선택
element = driver.find_element_by_xpath("//div[@class='parent']/following-sibling::div[last()]")

# 9. 형제 요소 중 n번째 요소 선택
element = driver.find_element_by_xpath("//div[@class='parent']/following-sibling::div[3]")

# 10. 형제 요소 중 첫 번째와 마지막 요소 선택
element = driver.find_element_by_xpath("//div[@class='parent']/following-sibling::div[position()=1 or position()=last()]")

# 11. 조상 요소 선택
element = driver.find_element_by_xpath("//div[@class='child']/ancestor::div")

# 12. 조상 요소 중 첫 번째 요소 선택
element = driver.find_element_by_xpath("//div[@class='child']/ancestor::div[1]")

# 13. 조상 요소 중 마지막 요소 선택
element = driver.find_element_by_xpath("//div[@class='child']/ancestor::div[last()]")

# 14. 조상 요소 중 n번째 요소 선택
element = driver.find_element_by_xpath("//div[@class='child']/ancestor::div[3]")

# 15. 조상 요소 중 첫 번째와 마지막 요소 선택
element = driver.find_element_by_xpath("//div[@class='child']/ancestor::div[position()=1 or position()=last()]")

# 16. 자신과 조상 요소 모두 선택
element = driver.find_element_by_xpath("//div[@class='child']/ancestor-or-self::div")

# 17. 속성 값 선택
element = driver.find_element_by_xpath("//input[@type='text']")

# 18. 첫 번째 하위 요소 선택
element = driver.find_element_by_xpath("//div[@class='parent']//p[1]")

# 19. 마지막 하위 요소 선택
element = driver.find_element_by_xpath("//div[@class='parent']//p[last()]")

# 20. n번째 하위 요소 선택
element = driver.find_element_by_xpath("//div[@class='parent']//p[3]")

# 21. 첫 번째와 마지막 하위 요소 선택
element = driver.find_element_by_xpath("//div[@class='parent']//p[position()=1 or position()=last()]")

# 22. 현재 요소와 그 후속 요소 선택
element = driver.find_element_by_xpath("//div[@class='parent']/self::div/following-sibling::div")

# 23. 현재 요소와 그 후속 요소 중 첫 번째 요소 선택
element = driver.find_element_by_xpath("//div[@class='parent']/self::div/following-sibling::div[1]")

# 24. 현재 요소와 그 후속 요소 중 마지막 요소 선택
element = driver.find_element_by_xpath("//div[@class='parent']/self::div/following-sibling::div[last()]")

# 25. 현재 요소와 그 후속 요소 중 n번째 요소 선택
element = driver.find_element_by_xpath("//div[@class='parent']/self::div/following-sibling::div[3]")

# 26. 현재 요소와 그 후속 요소 중 첫 번째와 마지막 요소 선택
element = driver.find_element_by_xpath("//div[@class='parent']/self::div/following-sibling::div[position()=1 or position()=last()]")

# 27. 현재 요소와 그 전선 요소 선택
element = driver.find_element_by_xpath("//div[@class='child']/self::div/preceding-sibling::div")

# 28. 현재 요소와 그 전선 요소 중 첫 번째 요소 선택
element = driver.find_element_by_xpath("//div[@class='child']/self::div/preceding-sibling::div[1]")


반응형