如何解决TypeError:类型为';WebElement';在Python中没有len()

如何解决TypeError:类型为';WebElement';在Python中没有len(),python,list,selenium,selenium-webdriver,webdriver,Python,List,Selenium,Selenium Webdriver,Webdriver,我想打印所有类似的元素,但不断出现错误(我使用的是Pycharm) 错误: TypeError: object of type 'WebElement' has no len() 这一行引发错误:num\u page\u items=len(productname) 全硒代码: 从selenium导入webdriver driver=webdriver.Chrome(“/Users/reezalaq/PycharmProjects/untitled2/venv/driver/chromedri

我想打印所有类似的元素,但不断出现错误(我使用的是Pycharm

错误:

TypeError: object of type 'WebElement' has no len()
这一行引发错误:
num\u page\u items=len(productname)

全硒代码:
从selenium导入webdriver
driver=webdriver.Chrome(“/Users/reezalaq/PycharmProjects/untitled2/venv/driver/chromedriver”)
驱动程序。获取(“https://www.blibli.com/jual/batik-pria?s=batik+pria”)
productname=driver。通过xpath(“//div[@class='product-title'])查找元素
oldprice=driver.find_element_by_css_selector(“span.oldprice text”).text
折扣=驱动程序。通过css选择器(“div.discount>span”)查找元素。文本
saleprice=driver.find_element_by_css_selector(“span.new price text”).text
num\u page\u items=len(产品名称)
对于范围内的i(数量页面项):
打印(productname[i].text+“:”+oldprice[i].text+“:”+折扣[i].text+“:”+saleprice[i].text)

driver.close()
您正在使用
find\u element\u by\u xpath
查找并返回与选择器匹配的第一个
WebElement
。您需要使用
find_elements\u by_xpath
,它返回所有匹配的元素

错误说明一切:

num_page_items = len(productname) 
TypeError: object of type 'WebElement' has no len()
productname
驱动程序中分配了返回类型。通过xpath(“//div[@class='product-title'])
查找元素,它是一个WebElement,而WebElement没有作为
len()的方法<可以在
列表上调用code>len()

解决方案 当您试图访问
时,请按以下方式列出项目:

print(productname[i].text + " : " + oldprice[i].text + " : " + discount[i].text + " : " + saleprice[i].text)
因此,productnameoldprice折扣saleprice需要为
List
类型

但您的代码如下所示:

productname = driver.find_element_by_xpath("//div[@class='product-title']")
oldprice = driver.find_element_by_css_selector("span.old-price-text").text
discount = driver.find_element_by_css_selector("div.discount > span").text
saleprice = driver.find_element_by_css_selector("span.new-price-text").text 
其中,productname是一个Web元素,oldprice折扣saleprice是文本。因此,您需要将它们更改为Web元素的
列表,如下所示:

productname = driver.find_elements_by_xpath("//div[@class='product-title']")
oldprice = driver.find_elements_by_css_selector("span.old-price-text")
discount = driver.find_elements_by_css_selector("div.discount > span")
saleprice = driver.find_elements_by_css_selector("span.new-price-text")