在使用 Geb 进行元素定位时,尽量避免使用 nth-child 查找定位器是一个好的实践。下面是一些替代方案:
nth-child。// 使用 ID 定位元素
$("div#myElement")
// 使用类名定位元素
$("div.myClass")
// 使用属性定位元素
$("input[name='username']")
parent(), sibling(), child() 等,来定位元素。这样可以在元素的上下文中进行定位,而无需使用 nth-child。// 在父元素中定位
$("div.parent").find("div.myElement")
// 定位同级元素
$("div.sibling").sibling("div.myElement")
// 在子元素中定位
$("div.parent").child("div.myElement")
nth-child,可以使用 Geb 提供的列表索引来定位元素。index 方法可以返回当前元素在其父元素中的索引位置。// 定位第一个元素
$("div.myElement").index(0)
// 定位最后一个元素
$("div.myElement").index(-1)
// 定位第二个元素
$("div.myElement").index(1)
通过使用更具体的定位器、相对定位和列表索引,可以避免在使用 Geb 时过度依赖 nth-child 查找定位器。