gpt4 book ai didi

python - 两个独立路径的 XPath?

转载 作者:行者123 更新时间:2023-12-03 16:14:50 25 4
gpt4 key购买 nike

我正在使用 Selenium Webdriver 使用文本的 XPath 在网页上定位文本。我想查找两个不同的条件:具有类“correct”的跨度标签和具有类“answer_correction”的 li 标签的父标签的跨度标签。

有 4 个“answer_corrections”元素和 16 个“correct”元素。

到目前为止,我想出的 XPath 是:

answers = browser.find_elements_by_xpath('//li[@class="answer_correction"]/label/span' or '//span[@class="correct"]')

我认为这应该根据两个条件返回一个 WebElements 列表。

这段代码:

browser.find_elements_by_xpath('//li[@class="answer_correction"]/label/span')

如预期的那样返回一个包含 4 个元素的列表。

这段代码:

 browser.find_elements_by_xpath('//span[@class="correct"]')

如预期的那样返回一个包含 16 个元素的列表。

但是,当我尝试使用我创建的 XPath 合并两者时,它仅返回“或”之前的第一个路径中的 Web 元素。

answers = browser.find_elements_by_xpath('//li[@class="answer_correction"]/label/span' or '//span[@class="correct"]')

仅返回 4 个“answer_corrections”的列表

当我颠倒顺序时,

answers = browser.find_elements_by_xpath('//span[@class="correct"]' or '//li[@class="answer_correction"]/label/span')

仅返回 16 个“正确”的元素。

这导致他们认为语句中的“或”有问题。

将两个单独的 XPath 合并为一个的正确方法是什么?

我不能只将一个列表附加到另一个列表,因为 20 个元素的顺序很重要。

最佳答案

找到我自己的答案! “或”运算符不适用于计算 2 个节点集。对于该任务,您必须使用“|”运算符(operator)。 | != 或。因此,将两者结合起来的正确 XPath 是:

answers = browser.find_elements_by_xpath('//li[@class="answer_correction"]/label/span | //span[@class="correct"]')

这将返回一个包含 20 个项目的列表,所有项目均按顺序排列。

关于python - 两个独立路径的 XPath?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48047766/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com