将 Xpath 转换为列表变量并使用 For 循环

Posted

技术标签:

【中文标题】将 Xpath 转换为列表变量并使用 For 循环【英文标题】:Turning an Xpath into a list variable and use For loop 【发布时间】:2021-12-24 11:00:03 【问题描述】:

我对机器人框架非常陌生。这个问题是关于使用 Xpath 创建一个列表变量。

我正在尝试在机器人中编写 FOR LOOP,以便打印出现在搜索结果页面上的所有项目。这是我到目前为止所做的:

    我尝试使用 Xpath 声明一个列表变量:
    @product         //div[contains(@class,'ProductCard__TitleMaxLines')]

此 Xpath 的重复次数与页面上的项目数相同,例如20,所以我假设这个列表将包含 20 个成员。 --> 是这样的吗?

    我创建了一个 For 循环:
    $index        Set variable        1
    For     $product  in      @related_product
            Exit for loop if    $index > 20
            Log to console      $product
            $index        Evaluate        $index+1

    End          

为此,我假设在 Xpath 上找到的第一个产品是 index=1,下一个是 index=2,依此类推。

这就是我到目前为止所做的一切。请告知这是否正常工作,或者是否有其他更好和更典型的方法。

【问题讨论】:

在您的具体示例中,您甚至不需要索引,只需使用 FOR 循环捕获的所有项目。但是,是的,这会起作用。 感谢@ClaudioBatista 的回复。我试过了,但没有用。它只打印了 1 行。 【参考方案1】:

我认为您的问题是,您在网页中有大约 20 次类似的 xpath。如果我的理解是正确的,你应该使用 Selenium 库中的 Get Webelements 关键字。

@product     Get Webelements    //div[contains(@class,'ProductCard__TitleMaxLines')]

以上行将创建具有相同 xpath 的 webelements 列表

【讨论】:

是的!这就是我想要的。 GetWebelements 有效,非常感谢 Roby。 @Nucleara 如果满意,请采纳答案。 嗨@SylvesterKruin,我应该在哪里点击接受? @Nucleara 单击投票箭头下方的灰色复选标记。它会变成绿色,这意味着你已经接受了答案。请参阅help center 了解更多信息,特别是what to do when someone answers。 @SylvesterKruin 完成。再次感谢。

以上是关于将 Xpath 转换为列表变量并使用 For 循环的主要内容,如果未能解决你的问题,请参考以下文章

如何将for循环输出转换为列表?

如何将此列表理解转换为 for 循环,但我不能 [重复]

在 Python 中将列表理解转换为 For 循环

如何将 for 循环转换为流

将 for 循环中的多个打印输出值存储到列表或变量中

在 for 循环中将 Python Dask 系列转换为列表或 Dask DataFrame