在使用 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
查找定位器。