【问题标题】:CSS Selectors - Search for unique value in a child(ren)CSS 选择器 - 在子项中搜索唯一值(ren)
【发布时间】:2018-11-16 05:59:14
【问题描述】:

我正在为 Web 应用程序编写 selenium 测试。该应用程序使用动态构建的表单,这意味着我有很多非唯一元素要尝试和遍历(#ids 很少,或者非常顶级)。这些形式也可以根据设置而改变(元素的位置可以不同,因此 nth-child 不可靠)。

我想通过这些拥有的 unqiue 类名找到一些字段,但是它们被埋在非唯一元素中。我需要一种方法通过它们的唯一值(不是#id)来定位这些元素,这样它们在表单上的位置就不会影响 selenium 找到它们。不过我不知道该怎么做。

希望这能解释这个场景:

<Some non-unqiue Div>
  <child>
    <child>
      <unique value 1>
<Some non-unqiue Div>
  <child>
    <child>
     <unique value 2>
<Some non-unqiue Div>
  <child>
    <child>
      <unique value I WANT THIS ONE>
<Some non-unqiue Div>
  <child>
    <child>
      <unique value 4>

您可以在此处看到我想要的元素具有我想要匹配的唯一值。但是,我不能使用 nth-child(3) 导航到其父级,因为它们出现的顺序可能会有所不同。例如,在不同的场景中,它可能是 nth-child(2)。

因此,可能适用于上述情况的选择器可能如下所示:

Some.nth-child(3) > child > child > [unique*=\"I WANT THIS ONE\"]

但是,在另一种情况下,最高父级可能是 nth-child(2),因此这将不再有效。

我是否可以使用任何 Css 选择器魔法来确保始终可以通过其唯一值找到该元素,而不管其父元素出现在列表中的哪个位置?

提前致谢!

【问题讨论】:

  • 你有什么尝试吗?分享您的代码
  • 目前没有,我真的不知道如何处理这个问题。我知道一旦我达到它的水平,我该如何选择我所追求的元素,但它会通过我坚持的父母来逆转
  • “唯一值”在 HTML 中翻译成什么...是类、属性还是什么?
  • 它是一个类名。因此,例如一个可能有一个包含我的唯一值的类“aw-ml”: div > div > div > [aw-ml*=\"myValue\"]
  • 更新了 OP 的更多细节

标签: css selenium css-selectors


【解决方案1】:

如果我以正确的方式发现问题,这里是您正在寻找的选择器:

'element/id/class:contains("I WANT THIS ONE")'

或者对于输入类型:

'element/id/class[value="I WANT THIS ONE"]'

例如:

'input[value="I WANT THIS ONE"]'

或者对于带有innerHTML的元素:

'div:contains("I WANT THIS ONE")'

或两者兼而有之:

'input[value="I WANT THIS ONE"],div:contains("I WANT THIS ONE")'

它对你有用吗?

【讨论】:

  • 根据其值选择最终元素很好(我已将 OP 更新为更清晰)。它遍历树到达我可以选择我遇到问题的点。感谢您的详细回复!
【解决方案2】:

哦,我的话。我想我偶然发现了答案,这是我从未想过的。

所以在我的 Css 选择器中,我一直使用 ">" 来分隔我的元素,我一直认为这是分隔它们的语法。但是,请阅读“>”是前一个元素的直接子元素!

如果您使用空格而不是“>”,那么它会在该元素下方的整个树中搜索您要查找的值!我在自动化方面有点自学,我不敢相信我没有意识到这是一件事。

刚刚尝试了一个类似于“#myId [value="my value"]”的选择器,使用空格分隔两个元素,它搜索了整个树并正确地落在了我的元素上。

【讨论】:

猜你喜欢
  • 2015-12-20
  • 1970-01-01
  • 2013-10-14
  • 1970-01-01
  • 2021-08-07
  • 2022-01-07
  • 1970-01-01
  • 1970-01-01
  • 2017-03-13
相关资源
最近更新 更多