如何使用Python和Selenium遍历webelements列表?

如何使用Python和Selenium遍历webelements列表?,python,selenium,Python,Selenium,我想遍历webelements列表并返回每个元素的文本,但我只从第一个元素中获取文本,而不是从其他标记中的其余元素中获取文本,然后代码就存在于该循环中 下面是我想从中提取文本的Html代码的一部分: 精选馅饼 另一个文本 不同文本 另一个文本 不要使用classname定位器,请尝试使用xpath,如下所示: PlajePariuri = driver.find_elements_by_xpath("//ul[@class='KambiBC-list-view__colu

我想遍历webelements列表并返回每个元素的文本,但我只从第一个
元素中获取文本,而不是从其他
  • 标记中的其余元素中获取文本,然后代码就存在于该循环中

    下面是我想从中提取文本的Html代码的一部分:

    
    
    • 精选馅饼
    • 另一个文本
    • 不同文本
    • 另一个文本

    不要使用
    classname
    定位器,请尝试使用
    xpath
    ,如下所示:

    PlajePariuri = driver.find_elements_by_xpath("//ul[@class='KambiBC-list-view__column']")
    for items in PlajePariuri:
        NumePlaje = items.find_element_by_xpath("//li/header/h2")
        print (NumePlaje.text)
    
    试试下面的代码-

    PlajePariuri = driver.find_elements_by_xpath("//ul[@class='KambiBC-list-view__column']//li/header/h2")
    for items in PlajePariuri:
        print (items.text)
    

    它一直在我的脸上,这将打印每个元素的文本,很高兴我能找到

    PlajePariuri = driver.find_elements_by_class_name('KambiBC-bet-offer-category KambiBC-collapsible-container KambiBC-expanded KambiBC-bet-offer-category--hidden KambiBC-bet-offer-category--fade-in')
    
    
        for items2 in PlajePariuri:
    
            NumePlaje = items2.find_element_by_class_name('KambiBC-bet-offer-category__title js-bet-offer-category-title')
    
            print (NumePlaje.text)
    

    我做了一个实现来查找列表中的元素

    我的案例是,我们有一个wiki,其中有一个附带列表,列表中可能有列表,也可能没有列表,等等。 这是我的解决方案:

    /#创建一个函数来接收旧的HTML(单击之前),
    //#新建HTML(单击后),以及我要查找的元素:
    def页面处理程序(旧源、新源、元素):
    新内容=[]
    //#将页面放入列表(需要验证它是否适合您)
    old\u page=old\u source.split('\n')
    新建页面=新建源。拆分('\n')
    //#比较旧页和新页。新页面的内容,我检查
    //#与我正在寻找的元素匹配
    对于新页面中的数据:
    如果数据不在旧页面中:
    如果数据中有元素:
    新增内容。追加(数据)
    返回新内容
    //#现在在主线程中,在程序单击项目之前,拍摄快照:
    旧页面=driver.page\u源
    //#单击项目
    elem=驱动程序。通过链接文本(项)查找元素。单击()
    //#拍摄新快照
    新建页面=driver.page\u源
    //#使用该功能发送旧页和新页以及您正在查看的类
    //#对于HTML代码中的:
    新建页面数据=页面处理程序(旧页面,新页面,'class=“plugin\u pagetree\u children\u span')
    //#现在我有了children元素,只需迭代列表。
    对于新_pg_数据中的元素_id:
    //#我使用regexp获取元素ID
    element_id=search('id=“(.*)”>,element_id)
    如果元素id为:
    elem=驱动程序。按元素id(元素id)查找元素。单击()
    

    我希望这个解决方案能帮助你们

    根据提供的HTML,我在
    li
    标记中没有看到任何此类
    文本。我遗漏了什么吗?@DebanjanB看一下
    标签,它们都有类名。您提供的HTML只包含一个您可以检索的
    标签。除非您提供更多的
    标记,否则很难派生出动态
    xpath
    @DebanjanB每个
    li
    标记内都有相同的
    h2
    元素,并且所有标记都具有第一个标记具有的相同类名,但具有不同的属性texts@Rius2html代码不正确。有许多缺少的关闭标记,并且似乎有许多嵌套列表,或者它们也没有正确关闭。除此之外,Python代码引用的属性根本没有出现在HTML代码段中。请提供一个与需要帮助的Python代码对应的有效HTML代码段loop@Rius2我得到了同样的效果,重复元素,你找到了解决方案吗?@YodaScholtz我找到了重复元素的解决方案。没有真正重复,但是循环没有正确地迭代
    WebElements
    。找到答案html代码中有更多文本,这将打印找到的所有文本,我需要在
    与特定类之间的文本name@Rius2--我不这么认为。你试过了吗?我肯定。正如我所说,实际的网页在
    ul
    列表中包含了更多包含更多文本的元素,我只发布了我目前感兴趣的部分。所以你的代码可以打印所有东西。我试过了。