打印所有文本,只需要一个
Printing all texts, required only one
我有一个 html 文件:
<div class="panel-heading">
Some Text1
<strong>Hello</strong>
</div>
<div>
Some Text2
Some Text3
<strong>
Hi1
Hi2
</strong
我只想在我的 python 脚本中使用 selenium 打印 Hello,所以我尝试了:
element = driver.find_element_by_xpath("//div[@class='panel-heading']")
for element in driver.find_elements_by_tag_name('strong'):
print (element.text)
结果是:
你好
嗨1
嗨2
但我只想要:
Hello
您可以使用 next
:
for element in driver.find_elements_by_tag_name('strong'):
print(next(element.text for element in driver.find_elements_by_tag_name('strong')))
如果没有这样的元素,或者更少的神秘和更健壮,只是 break
打印后的循环:
for element in driver.find_elements_by_tag_name('strong'):
print(element.text)
break
您可以简单地使用
element = driver.find_element_by_xpath("//div[@class='panel-heading']")
print(element.find_element_by_tag_name('strong').text)
打印第一个 strong
所需的文本div
请注意,for element in driver.find_elements_by_tag_name('strong')
表示遍历页面上的 所有 strong
个节点。您需要将 driver
替换为 element
以迭代已定义 WebElement:
的后代 strong
for strong in element.find_elements_by_tag_name('strong'):
print(strong.text)
你的代码给你列表。所以只需使用列表的第一个元素,它会给你 "Hello".
element = driver.find_elements_by_tag_name('strong')[0]
你在代码中犯了一个小错误,你用 panel-heading
得到了 div
但在循环中你迭代了 DOM 中带有标签 strong
的所有元素。也许,这里是您想要的样子:
divElement = driver.find_element_by_xpath("//div[@class='panel-heading']")
for element in divElement.find_elements_by_tag_name('strong'):
print (element.text)
但是div
和panel-heading
只包含一个span
和strong
,你可以用css选择器得到它:
strongText = driver.find_element_css_selector(".panel-heading strong").text
我有一个 html 文件:
<div class="panel-heading">
Some Text1
<strong>Hello</strong>
</div>
<div>
Some Text2
Some Text3
<strong>
Hi1
Hi2
</strong
我只想在我的 python 脚本中使用 selenium 打印 Hello,所以我尝试了:
element = driver.find_element_by_xpath("//div[@class='panel-heading']")
for element in driver.find_elements_by_tag_name('strong'):
print (element.text)
结果是:
你好
嗨1
嗨2
但我只想要:
Hello
您可以使用 next
:
for element in driver.find_elements_by_tag_name('strong'):
print(next(element.text for element in driver.find_elements_by_tag_name('strong')))
如果没有这样的元素,或者更少的神秘和更健壮,只是 break
打印后的循环:
for element in driver.find_elements_by_tag_name('strong'):
print(element.text)
break
您可以简单地使用
element = driver.find_element_by_xpath("//div[@class='panel-heading']")
print(element.find_element_by_tag_name('strong').text)
打印第一个 strong
所需的文本div
请注意,for element in driver.find_elements_by_tag_name('strong')
表示遍历页面上的 所有 strong
个节点。您需要将 driver
替换为 element
以迭代已定义 WebElement:
strong
for strong in element.find_elements_by_tag_name('strong'):
print(strong.text)
你的代码给你列表。所以只需使用列表的第一个元素,它会给你 "Hello".
element = driver.find_elements_by_tag_name('strong')[0]
你在代码中犯了一个小错误,你用 panel-heading
得到了 div
但在循环中你迭代了 DOM 中带有标签 strong
的所有元素。也许,这里是您想要的样子:
divElement = driver.find_element_by_xpath("//div[@class='panel-heading']")
for element in divElement.find_elements_by_tag_name('strong'):
print (element.text)
但是div
和panel-heading
只包含一个span
和strong
,你可以用css选择器得到它:
strongText = driver.find_element_css_selector(".panel-heading strong").text