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]")
'python3 selenium' 카테고리의 다른 글
python selenium popup accept, dismiss click 확인, 아니오 버튼 클릭 (0) | 2023.12.10 |
---|---|
python PYQT5 save, load setting Value(QLineEdit,QDateEdit,QTimeEdit,QComboBox,QSpinBox,,Q CheckBox,QradioButton) (1) | 2023.12.10 |
python schedule & Thread 사용 방법 및 예제 (1) | 2023.12.08 |
Python selenium Thread 를 사용하여 함수를 병렬로 실행하고, 각 스레드가 실행을 완료할 때까지 대기하는 예제입니다 (0) | 2023.12.08 |
python selenium pyqt5 창닫힘 이벤트 추가 (1) | 2023.12.08 |