【发布时间】:2018-01-01 07:00:41
【问题描述】:
我正在使用 Selenium Webdriver 使用文本的 XPath 来定位网页上的文本。我要查找两个单独的条件:具有“正确”类的跨标签和具有“answer_correction”类的 li 标签的父标签的跨标签。
有 4 个“answer_corrections”元素和 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')
按预期返回一个包含 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 个元素的顺序很重要。
【问题讨论】: