XPATH,Select 来自 Flex 容器的特定有效值

XPATH, Select an specific valid value from a Flex container

正如标题所暗示的那样,我目前正面临一些试图解决这个问题的问题,问题是我有一个水平伸缩容器,它显示了 Qtrs/Years为了将有效的分配给包轮换,正如您将在底部代码片段中看到的那样,我必须考虑 3 种类型的“status/classes”,因为某些 quarters/years 可以设置为“无效”意味着我不应该将它们用于 selection 本身,让我实际上不得不首先搜索有效的季度(class="季度有效class="季度有效selected,后一个是我目前拥有的 selected duh')

然后在实际只获得有效选项后,我需要能够创建一个 XPATH,允许我遍历这些选项并能够 select 使用索引或最好通过文本(例如: quarterNumber = '3Q' and year = "2021")

那部分的 html/dom 基本上是这样的:

<div class="quartersContainer"</div>
    <div class="quarter">
        <div class="quarterNumber">1Q</div>
        <div class="year">2021</div>
        <div class="releasedIndicator"></div>
        <div class="quarterbar-editing-mode"></div>
    </div>
    <div class="quarter">
        <div class="quarterNumber">2Q</div>
        <div class="year">2021</div>
        <div class="releasedIndicator"></div>
        <div class="quarterbar-editing-mode"></div>
    </div>
    <div class="quarter valid selected">
        <div class="quarterNumber">3Q</div>
        <div class="year">2021</div>
        <div class="releasedIndicator"></div>
        <div class="quarterbar-editing-mode"></div>
    </div>
    <div class="quarter valid">
        <div class="quarterNumber">4Q</div>
        <div class="year">2021</div>
        <div class="releasedIndicator"></div>
        <div class="quarterbar-editing-mode"></div>
    </div>
    <div class="quarter">
        <div class="quarterNumber">1Q</div>
        <div class="year">2022</div>
        <div class="releasedIndicator"></div>
        <div class="quarterbar-editing-mode"></div>
    </div>

到目前为止我只有这个....(我真的很陌生:( )

//div[包含(@class,'quarter valid')和.//@class='quarterNumber'和.//@class='year']

这一切的重点是实际生成一个 XPATH,可以在未来或通过 Behave Feature 文件进行操作,例如,测试人员只需实际更改 text从 2Q - 2021 到 3Q - 2023 之类的时间,它将能够寻找它。

任何建议或指导将不胜感激:')

按照@DMart 的建议,做这样的事情

def build_xpath(year ,quarterNumber):
   return "//div[contains(@class,'quarter valid') and .//@class='" + year = "' and .//@class='" + quarterNumber + "']"
 

然后由您决定如何调用以及使用什么值调用 build_xpath()