考慮HTML的一大塊是這樣的:
<body>
<h1 id="profile"> 1st h1 </h1>
<p> 1st p </p>
<p> 2nd p </p>
<h1> 2nd h1 </h1>
<h2> 1st h2 </h2>
<p> 3rd p </p>
<h3> 1st h3 </h3>
<p> 4th p </p>
<p> 5th p</p>
<h1 id="profile"> 3rd h1 </h1>
</body>
你想有一個(共同)母公司,即body
元素的項目。因此,通過找到第一個h1
,您可以找到該父項。然後你可以找到第一個h1
的所有兄弟姐妹。
>>> from selenium import webdriver
>>> from selenium.webdriver.common.keys import Keys
>>> driver = webdriver.Chrome()
>>> driver.get('file://c:/scratch/temp.htm')
>>> parent = driver.find_element_by_xpath('//h1[@id="profile"]/..')
>>> for child in parent.find_elements_by_xpath('./child::*'):
... child.text, child.get_attribute('id')
...
('1st h1', 'profile')
('1st p', '')
('2nd p', '')
('2nd h1', '')
('1st h2', '')
('3rd p', '')
('1st h3', '')
('4th p', '')
('5th p', '')
('3rd h1', 'profile')
在這個循環中child
將包含你似乎想引用。你可以使用什麼get_attribute
返回來忽略你不想要的兄弟姐妹。
有沒有機會發佈一個鏈接到頁面?沒有看到頁面,我建議你尋找一個父元素,它包含你想要的所有元素(如果有的話),然後從父元素中獲取包含的元素。 – JeffC
你能詳細說明你爲什麼要這麼做嗎?可能有更好的方法。 – JeffC