我有一个html文件:
<div class="panel-heading">
Some Text1
<strong>Hello</strong>
</div>
<div>
Some Text2
Some Text3
<strong>
Hi1
Hi2
</strong
我只想使用硒在python脚本中仅打印你好,所以我尝试了:
element = driver.find_element_by_xpath("//div[@class='panel-heading']")
for element in driver.find_elements_by_tag_name('strong'):
print (element.text)
结果是:
你好
Hi1
Hi2
但我只想要:
你好
答案 0 :(得分:0)
您可以使用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
答案 1 :(得分:0)
您可以简单地使用
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)
答案 2 :(得分:0)
您的代码列出了您。因此,只需使用列表的第一个元素,它就会给您“ Hello”。
element = driver.find_elements_by_tag_name('strong')[0]
答案 3 :(得分:0)
您在代码中犯了一些小错误,使用div
得到了panel-heading
,但是在循环中,您迭代了将标记为strong
的所有元素都扔到DOM中。也许,这就是您想要的样子:
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