2016-08-27 7 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で提供している単一の 'a'をしたいですか? –

答えて

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

あなたがtd.threadの下で任意の子孫aを読み込むCSSセレクタtd.thread aを、使用しています。あなたが望むのはtd.thread > aです。子はaの子で、td.threadです。 2つ以上のaが存在する可能性はありますが、全体のHTMLによりますます少なくなる可能性があります。

CSS Selector reference

関連する問題