Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/73.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Html Selenium:选择第一个内部元素_Html_Selenium_Testing_Selenium Webdriver - Fatal编程技术网

Html Selenium:选择第一个内部元素

Html Selenium:选择第一个内部元素,html,selenium,testing,selenium-webdriver,Html,Selenium,Testing,Selenium Webdriver,我选择所有元素中的所有元素 <td class="thread"> <i class="ter green"></i> <a href="/forum/threads/12/">Something about...</a> <p class="info">Author</p> </td> 然而,我得到的元素比应有的多得多。我想我必须在td class=“thread”内只选择

我选择所有
元素中的所有
元素

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

然而,我得到的元素比应有的多得多。我想我必须在
td class=“thread”
内只选择第一个
a
。如何执行此操作?

当您使用CSS选择器
td.thread a
时,它读取
td.thread
下的任何子体
a
。您更可能需要的是
td.thread>a
,它读取
td.thread
的子
a
。仍然有可能存在多个
a
,但是根据整个HTML,您可能会得到更少

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/"

当您使用CSS选择器
td.thread a
时,它读取
td.thread
下的任何子体
a
。您更可能需要的是
td.thread>a
,它读取
td.thread
的子
a
。仍然有可能存在多个
a
,但是根据整个HTML,您可能会得到更少


如果只想查找单个元素,为什么要使用
findElement
而不是
findElement
??你到底想要什么??您是否希望使用HTML中提供的单个
a
?如果您只想查找单个元素,为什么要使用
findElement
而不是
findElement
??你到底想要什么??你想要一个你用HTML提供的
a
?虽然这个代码片段可以解决这个问题,但确实有助于提高你文章的质量。请记住,您将在将来回答读者的问题,这些人可能不知道您的代码建议的原因。还请尽量不要用解释性注释挤满您的代码,因为这会降低代码和解释的可读性!虽然这个代码片段可以解决这个问题,但它确实有助于提高文章的质量。请记住,您将在将来回答读者的问题,这些人可能不知道您的代码建议的原因。还请尽量不要用解释性注释挤满您的代码,因为这会降低代码和解释的可读性!
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/"