首页 > 解决方案 > XPATH,从 Flex 容器中选择特定的有效值

问题描述

正如标题暗示的那样,我目前正面临一些试图解决这个问题的问题,问题是我有一个水平弹性容器,它显示Qtrs/Years以便为包轮换分配一个有效的容器,如您将在底部片段有 3 种类型的“状态/类别”我必须考虑,因为某些季度/年份可以设置为“无效”,这意味着我不应该将它们作为选择本身考虑,让我实际上不得不首先搜索有效的季度(class="quarter validclass="quarter valid selected,后一个是我目前选择的那个 duh')

然后在实际只获得有效的那些之后,我需要能够创建一个 XPATH,它允许我浏览这些选项,并能够使用索引或最好通过文本选择它们(例如: QuarterNumber = '3Q' 和 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,'季度有效') and .//@class='quarterNumber' and .//@class='year']

这样做的全部意义在于实际生成一个 XPATH,该 XPATH 可以在未来或通过 Behave Feature 文件进行操作,因此测试人员只需将文本从 2Q - 2021 实际更改为 3Q - 2023,它就能够去寻找它。

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

标签: pythonseleniumxpathautomationbdd

解决方案


就像@DMart 建议的那样,做这样的事情

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

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


推荐阅读