【发布时间】: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