2016-08-27 95 views
0

我選擇所有<td>元素硒:選擇第一內側元素

<td class="thread"> 
    <i class="ter green"></i> 
    <a href="/forum/threads/12/">Something about...</a> 
    <p class="info">Author</p> 
</td> 

我用下面的內部的所有<a>元素:

driver.findElements(By.cssSelector("td.thread a")); 

但是,我得到更多的元素比應該有的。我想,我只能選擇第一atd class="thread"。我怎樣才能做到這一點?

+0

如果你只想要查找單個元素,爲什麼使用'findElements',而不是'findElement'?你想要什麼?你想單一的'你可以提供HTML嗎? –

回答

0
thread = driver.find_element_by_class_name('thread') 
correct_link = thread.find_element_by_tag_name('a').get_attribute('href') 
print(correct_link) 
>>> "/forum/threads/12/" 
+2

雖然這個代碼片斷可以解決的問題,[包括說明](// meta.stackexchange.com/questions/114762/explaining-entirely-code-based-answers)確實有助於提高您的文章質量。請記住,您將來會爲讀者回答問題,而這些人可能不知道您的代碼建議的原因。也請儘量不要使用解釋性註釋來擠佔代碼,因爲這會降低代碼和解釋的可讀性! – FrankerZ

2

當您使用CSS選擇器td.thread a,讀取td.thread下任何後代a。你更有可能想要的是td.thread > a讀取一個孩子的td.threada。它仍然可能有不止一個a但你會取決於整體HTML可能會得到大量減少。

CSS Selector reference