首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用selenium的Python :循环遍历列表中的第一个web元素

使用selenium的Python :循环遍历列表中的第一个web元素
EN

Stack Overflow用户
提问于 2022-04-08 23:10:06
回答 2查看 51关注 0票数 0

我刚接触过python和selenium,我已经开始错误地给自己一些“任务”来练习。我有下一个问题:下面的代码标识页面中产品的正确数量,如果我打印all_products将打印:最多12个不同的web元素;(12个默认结果在页面上或更少取决于可用的项目),我想在字典中打印这个页面中的每一个产品,其中包含“产品名称”和“产品价格”,但是有些地方出错了,看起来它在第一个web元素中循环,输出是:

产品数量: 11件{“名称”:“Nova 9 SE 128 of晶体蓝”,“Price”:'1599,68'},{'Name':'Nova 9 SE 128 of晶体蓝‘,'Price':'1599,68'},{’名称‘:'Nova 9 SE 128 of晶体蓝’,{‘价’:‘价格’:'1599,68'},{‘名称’:'Nova 9 SE 128 of水晶蓝‘,{’名称‘:'1599,68'},{’名称‘’,{‘名称’‘'Price':'1599,68'},{‘名称’:'Nova 9 SE 128 SE晶体蓝‘,'Price':'1599,68'},{’名称‘:'Nova 9 SE 128 SE晶体蓝’,'Price':'1599,68'},{'Name':'Nova 9 SE 128 SE晶体蓝‘,{'Name':'Nova 9 SE 128 SE’,'Price':‘Nova 9 SE 128 SE’,'Price':'1599,68'},{‘名称’:'Nova 9 SE 128 SE晶体蓝‘,'Price':'1599,68'},{’名称‘:'Nova 9 SE 128 SE晶体蓝’,‘价格’:'1599,68'}

代码语言:javascript
复制
url = "https://www.orange.ro/magazin-online/telefoane?order=ASC&sort=TopSales&from=0&size=12&filter=Huawei,Apple,Faraabonament1,Noi,Instoc"
driver.get(url)
all_products_class = 'ws-product'
all_products = driver.find_elements(By.CLASS_NAME, all_products_class)
print(f"Number of products: {len(all_products)}")
all_product_price = []

for product in all_products:

  device_name_xpath = ".//span[@class='ws-product-model-name']"
  device_name = driver.find_element(By.XPATH, device_name_xpath)
  name = device_name.text

  device_price_xpath = ".//span[@class='ws-product-price']"
  device_price = driver.find_element(By.XPATH, device_price_xpath)
  price = device_price.text
  
  all_product_price.append({'Name': name, 'Price' : price})

print(all_product_price)
driver.quit
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-04-11 13:49:01

我在守则中发现了这个问题:

代码语言:javascript
复制
device_name = driver.find_element(By.XPATH, device_name_xpath)

代之以:

代码语言:javascript
复制
device_name = product.find_element(By.XPATH, device_name_xpath)

&

代码语言:javascript
复制
device_price = driver.find_element(By.XPATH, device_price_xpath)

替换成

代码语言:javascript
复制
device_price = product.find_element(By.XPATH, device_price_xpath)
票数 0
EN

Stack Overflow用户

发布于 2022-04-11 04:48:36

代码中似乎缺少了一些东西。

当循环遍历所有产品的列表并在这里检索每个产品的详细信息时

代码语言:javascript
复制
device_name_xpath = ".//span[@class='ws-product-model-name']"
device_name = driver.find_element(By.XPATH, device_name_xpath)

您(很可能)必须从所有产品的列表中指定产品的唯一属性(可能有产品id)。

换句话说:在您的循环中,您总是选择相同的span,具有一个名称为ws-的类。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71803959

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档