Python selenium' list'对象没有属性' text'错误

时间:2018-04-18 12:47:01

标签: python selenium

我试图从网站<span class="auto-link">yes</span>上的评论中复制文字,而我的python代码是

element=browser.find_elements_by_xpath('//span[@class="auto-link"][1]')
print(element.text)

但我继续获取&#39;列表&#39;对象没有属性&#39; text&#39;错误,我不知道我做错了什么。

6 个答案:

答案 0 :(得分:0)

我从未使用过Selenium,但根据错误和您的回答,答案非常明确。

当您搜索某个类时,可能会有多个匹配元素,因此它会返回所有找到的匹配项的列表。即使您只有一个具有该类的元素,它仍将返回一个列表以保持一致性。

抓住找到的元素中的第一个元素:

elements = browser.find_elements_by_xpath('//span[@class="auto-link"][1]')
# ^ Renamed to reflect type better

print(elements[0].text)
#              ^ Grab the first element

答案 1 :(得分:0)

我在python中使用硒。尝试使用此代码,希望对您有用。

    element=browser.find_elements_by_xpath('//span[@class="auto-link"][1]')

    for value in element:
        print(value.text)

答案 2 :(得分:0)

当您要查找多个元素并采用与xpath匹配的第一个元素时,这将起作用:

element=browser.find_elements_by_xpath('//span[@class="auto-link"][1]').getAttribute("innerHTML")
print(element)

这是当您只寻找一个时:

element=browser.find_element_by_xpath('//span[@class="auto-link"]').getAttribute("innerHTML")
print(element)

输出:

>>>yes

答案 3 :(得分:0)

首先写出您当前正在使用的span的xpath,然后将索引号添加到xpath的最后一个,但在其中,如下所示。

from selenium import webdriver`
driver = webdriver.Firefox()
driver.get("http://www.example.org")
element=browser.find_elements_by_xpath('//span[@class="auto-link"[1]').click()
print(element)

[1]是我要访问的值的索引号。

答案 4 :(得分:0)

# instead of driver.find_elements_by_xpath() use driver.find_element_by_xpath() to get the individual element of the table
from selenium import webdriver
from webdriver_manager.chrome import ChromeDriverManager
import time

# Google Chrome
driver = webdriver.Chrome(ChromeDriverManager().install())

driver.get("https://testautomationpractice.blogspot.com/") 

# Get Number of Rows
rows = len(driver.find_elements_by_xpath("//*[@id='HTML1']/div[1]/table/tbody/tr"))

# Get Number of Columns
columns = len(driver.find_elements_by_xpath("//*[@id='HTML1']/div[1]/table/tbody/tr[1]/th"))

print("Number of Rows:", rows)
print("Number of Columns:", columns)

# In web table index starts with 1 instead of 0 
for row in range(2, rows+1):
    for col in range(1,columns+1):
        value = driver.find_element_by_xpath("//*[@id='HTML1']/div[1]/table/tbody/tr["+str(row)+"]/td["+str(col)+"]").text
        print(value, end='      ')
    print()


time.sleep(5)

# Close the Browser
driver.close()

答案 5 :(得分:0)

不要使用find_elements_by_xpath,而是使用find_element_by_xpath