Selenium Xpath WebElement文本无法打印

时间:2018-11-17 09:18:47

标签: python selenium xpath

我正在尝试使用以下代码提取文本。我没有收到任何错误消息。当我打印输出变量时,什么也不会返回。

helpful_vote = browser.find_elements_by_xpath('//span[@data-hook="helpful-vote-statement"]')
vote_text = helpful_vote.text
print( vote_text )

当我查看日志(下图)时,我尝试检索的文本显示在名为“ parent” 的子元素下。我应该使用另一个xpath函数或Python方法来提取文本吗?

enter image description here

1 个答案:

答案 0 :(得分:0)

您使用方法find_elements_by_xpath,该方法返回元素列表。因此,您在text对象中没有属性list。您可以选择helpful_vote的第一个(或您需要的其他任何元素)并访问其text属性,或迭代该列表并从每个XPath结果中获取text

但是,如果您希望从该XPath中获得单个结果,只需使用方法find_element_by_xpath即可返回单个元素。 因此,您的代码将如下所示:

helpful_vote = browser.find_element_by_xpath('//span[@data-hook="helpful-vote-statement"]')
vote_text = helpful_vote.text
print(vote_text)

您可以在Selenium docs for Python上找到更多信息。

更新: 我不清楚您想要实现什么。如果要迭代XPath结果并打印每个元素的text,那么此代码对我有用:

from selenium import webdriver
import time

browser = webdriver.Chrome(r'C:\chromedriver.exe')
link = 'https://www.amazon.com/Gerber-Organic-Foods-Veggie-Variety/product-reviews/B00D05BPTW/ref=cm_cr_dp_d_show_all_btm?ie=UTF8&reviewerType=all_reviews'
browser.get(link)
time.sleep(6)
helpful_vote = browser.find_elements_by_xpath('//span[@data-hook="helpful-vote-statement"]')

for attr1 in helpful_vote:
    Votes = attr1.text
    print(Votes)

browser.close()

输出为:

7个人认为这很有帮助
3个人认为这很有帮助
20个人发现这很有帮助
3个人认为这很有帮助
有人发现这有帮助
5个人认为这很有帮助
6个人认为这很有帮助