使用selenium find_elements_by_xpath多次返回同一元素的数组,而不是返回所有元素

2024-05-14 16:21:26 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试编写一个机器人,为健身房网站上的特定活动预留特定时间。健身房的网站如下所示:

Gym Website

有多种活动实例,如“篮球室”、“健身房主通道”、“游泳池”和其他活动。我的目标是选择信息的每个“块”并将其存储在一个数组中。然后,我可以遍历数组,并按可用性、类型和时间分离活动

我的代码如下所示:

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait, Select
from selenium.webdriver.support import expected_conditions as EC

listOfClasses = browser.find_elements_by_xpath("//div[@ng-repeat='class in value']")
for classBlock in listOfClasses:
    n = classBlock.find_element_by_xpath("//h1[@class='class-title ng-binding']")
    t = classBlock.find_element_by_xpath("//div[@class='row class-details']/div[@class='col-lg-3 ng-binding'][2]")
    print("Class:",n.text,"Time of class",t.text)

页面上有142个可供选择的类。当我运行脚本时,ListofClass的长度是142项,但当我检查n(类的名称)和t(类的时间)的值时,索引0-3没有值,索引4-141都只是页面上第一个元素的值。我只有从早上5:00到6:00的篮球室实例

看起来要么我最初的类数组只被页面上的第一个元素占用,要么我每次都在ListofClass中搜索相同的项。我做错了什么


Tags: fromimportdivbyselenium时间页面数组
1条回答
网友
1楼 · 发布于 2024-05-14 16:21:26

事实证明,我不是第一个犯这个错误的人。我发现this个有用的相关问题,我无意中重复了这个问题。本质上,“/”选项告诉selenium从文档的根开始搜索。相反,我需要“//”命令它只在结果中搜索当前节点的子节点

相关问题 更多 >

    热门问题