【问题标题】:XPATH, Select an specific valid value from a Flex containerXPATH,从 Flex 容器中选择特定的有效值
【发布时间】:2021-08-03 18:49:00
【问题描述】:

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

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

这样做的重点是实际生成一个 XPATH,该 XPATH 可以在未来或通过例如行为特征文件进行操作,因此测试人员只需要实际更改 2Q 之类的 text - 2021 到 3Q - 2023,它会找到它。

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

【问题讨论】:

  • 您可以将变量组合到 xpath 中:"//div[contains(@class,'quarter valid') and .//@class='" + quarterNumber + "' and .//@ class='年份']"
  • @DMart 感谢您的回答,不过我目前缺少实际为其分配“可自定义”文本的部分,因此我实际上可以将其用于功能文件:(
  • 它是一个变量。随心所欲地分配它的价值。除非我误解了你的实际要求......
  • @DMart,没关系,你是绝对正确的,哈哈,我在那个方面做得不好,谢谢!!!

标签: python selenium xpath automation bdd


【解决方案1】:

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

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

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

【讨论】:

  • 谢谢西贝!就像你和 DMart 建议的那样使用这个,非常感谢你们两个!
猜你喜欢
  • 2017-12-20
  • 2019-01-21
  • 2023-03-22
  • 2012-11-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-12-03
  • 2021-11-28
相关资源
最近更新 更多