2014-09-13 27 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:消息:u'無法定位元素:{「method」:「xpath」,「selector」:「// * [contains(text(),\'test folder \')] /../../ ..//tr[2]/td[2]/div「}'; – Michael 2014-09-13 15:31:48

+0

@Michael,你能告訴我你正在處理的html/url嗎? – falsetru 2014-09-13 15:33:16

+0

但是它的工作方式如下:driver.find_element_by_xpath(「// * [contains(text(),'文件夾名稱')]」)。find_element_by_xpath(「//../../..// tr [2]/td [2]/div「) – Michael 2014-09-13 15:41:31

0

你可以讓你的表達用ancestor XPath函數短。以http://www.w3schools.com/xpath/xpath_axes.asp爲例。對於你的情況,它看起來像//*[contains(text(), 'folder name')]/ancestor::/div(它可能需要更正,因爲在問題中沒有提供精確的HTML代碼片段)。