2014-09-13 1 views
1

부모의 부모의 부모에게 다가 갈 수있는 방법이 있습니까? :) 이렇게하지 않으려면 :xpath로 부모 컴포넌트의 부모를 선택하는 방법

driver.find_element_by_xpath("//*[contains(text(), 'folder name')]").find_element_by_xpath('..').find_element_by_xpath('..').find_element_by_xpath('..').find_element_by_xpath('//tr[2]/td[2]/div') 

그래서 부모님에게 가서 내 요소를 찾는 것보다 먼저 폴더 이름을 찾아야합니다. 내가 만들 수있는 유일한 방법이다. 모든 폴더는 동일한 요소를 가지고 있기 때문입니다.

답변

1

당신은 하나의 XPath로 표현할 수있다 :

driver.find_element_by_xpath(
    "//*[contains(text(), 'folder name')]/../../..//tr[2]/td[2]/div" 
) 
+0

나를 위해 작동하지 않습니다. NoSuchElementException : 메시지 : 요소를 찾을 수 없습니다 : { "method": "xpath", "selector": "// * [텍스트를 포함합니다 (test folder) \]) /../../ ..//tr[2]/td[2]/div "} '; – Michael

+0

@Michael, 내가 처리중인 HTML/URL을 보여 주시겠습니까? – falsetru

+0

하지만이 방법으로 작동합니다 : find_element_by_xpath ("//../../..// tr [2]/td [2]/div ") – Michael

0

당신은 ancestor XPath는 기능을 사용하여 식을 단축 할 수 있습니다. 예를 들어 http://www.w3schools.com/xpath/xpath_axes.asp을 참조하십시오. 귀하의 경우에는 //*[contains(text(), 'folder name')]/ancestor::/div처럼 보일 것입니다. (질문에 제공된 정확한 HTML 스 니펫이 없기 때문에 아마도 수정해야 할 것입니다).

관련 문제