UI 테스트 자동화를 짜던 중, 필요한 항목들에 각각 id 값이 존재하는 element를 발견했다.
다만, 라디오 버튼에 포함된 input 태그였기에 click 값을 주거나 send_keys로 enter를 넣어줘도 선택되지 않았다.
따라서 id가 존재하는 input 태그를 중심으로 그 상위 노드인 div 태그를 접근해서 click 하는 방법을 시도해보았다.
구글링 결과 xpath의 한 element를 중심으로 그 상위 노드를 접근하는 방법은 2가지가 있었다.
위 2가지 모두 하나뿐인 상위 노드 div를 잘 가리켰다.
하지만 정확성과 사용성의 면에서 바라보면 2번째 방법이 더 효과적이고 다양한 케이스에서도 더 활용하기 좋다. 아래와같이 parent 이외에도 사용할 수 있는 검색 방향들이 여럿 있다.
검색 방향 | 설명 |
---|---|
self | 현재 노드를 선택한다. |
attribute | 현재 노드의 속성 노드를 모두 선택한다. |
namespace | 현재 노드의 네임스페이스 노드를 모두 선택한다. |
child | 현재 노드의 자식 노드를 모두 선택한다. |
descendant | 현재 노드의 자손 노드를 모두 선택한다. |
descendant-or-self | 현재 노드와 현재 노드의 자손 노드를 모두 선택한다. |
following | XML 문서에서 현재 노드의 종료 태그 이후에 등장하는 모든 노드를 선택한다. |
following-sibling | 현재 노드 이후에 위치하는 형제 노드를 모두 선택한다. |
parent | 현재 노드의 부모 노드를 선택한다. |
ancestor | 현재 노드의 조상 노드를 모두 선택한다. |
ancestor-or-self | 현재 노드와 현재 노드의 조상 노드를 모두 선택한다. |
preceding | XML 문서에서 현재 노드 이전에 등장하는 모든 노드를 선택한다.(조상 노드, 속성 노드, 네임스페이스 노드는 제외한다.) |
preceding-sibling | 현재 노드 이전에 위치하는 형제 노드를 모두 선택한다. |
//element[@id='현재노드']/검색방향::검색노드[필터표현식]
ex) //input[@id='myId']/parent::div