Python 两个独立路径的XPath?

Python 两个独立路径的XPath?,python,selenium,xpath,Python,Selenium,Xpath,我正在使用SeleniumWebDriver使用文本的XPath定位网页上的文本。我想寻找两个独立的条件:类为“correct”的Span标记和类为“answer\u correction”的li标记的父标签的Span标记 有4个“答案更正”元素和16个“更正”元素 到目前为止,我提出的XPath是: answers = browser.find_elements_by_xpath('//li[@class="answer_correction"]/label/span' or '//span[

我正在使用SeleniumWebDriver使用文本的XPath定位网页上的文本。我想寻找两个独立的条件:类为“correct”的Span标记和类为“answer\u correction”的li标记的父标签的Span标记

有4个“答案更正”元素和16个“更正”元素

到目前为止,我提出的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')
 browser.find_elements_by_xpath('//span[@class="correct"]')
按预期返回包含4个元素的列表

此代码:

browser.find_elements_by_xpath('//li[@class="answer_correction"]/label/span')
 browser.find_elements_by_xpath('//span[@class="correct"]')
按预期返回包含16个元素的列表

但是,当我尝试使用我创建的XPath来合并这两个元素时,它只返回来自“or”前面第一个路径的web元素

answers = browser.find_elements_by_xpath('//li[@class="answer_correction"]/label/span' or '//span[@class="correct"]')
仅返回4个“答案更正”的列表

当我颠倒顺序时

answers = browser.find_elements_by_xpath('//span[@class="correct"]' or '//li[@class="answer_correction"]/label/span')
仅返回16个“正确”元素

这使他们相信陈述中的“或”有问题

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


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

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

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

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

我将使用CSS选择器进行此操作。它们更短,更容易阅读,更容易书写

li.answer_correction > label > span , span.correct
CSS选择器速度更快,支持范围更广。我确实使用XPath,但仅当我需要通过包含的文本查找元素时,这是只有XPath才能做到的