You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Selenium Page Factory:如何通过嵌套选择器定位元素?

用Page Factory实现嵌套定位(替代ByChained)

方法1:使用@FindBys注解

@FindBys注解可以实现和ByChained一致的链式嵌套定位逻辑——每个@FindBy定义的定位器会在前一个定位器找到的元素范围内继续查找,最终返回匹配所有层级条件的元素列表。

对应你原来的ByChained代码,用Page Factory的写法如下(Kotlin):

import org.openqa.selenium.WebElement
import org.openqa.selenium.support.FindBy
import org.openqa.selenium.support.FindBys

@FindBys(
    FindBy(className = "hb-card"),
    FindBy(className = "hb-card-header"),
    FindBy(className = "hb-card-tittel"),
    FindBy(tagName = "span")
)
private lateinit var endreBoligModal: MutableList<WebElement>

这段代码的逻辑和你之前的ByChained完全一致:先找到所有class为hb-card的元素,再在每个这类元素下找class为hb-card-header的子元素,依次类推,最终返回最内层的span元素列表。

方法2:使用CSS选择器(更简洁)

如果层级关系明确,也可以直接用CSS选择器一次性描述嵌套结构,代码更紧凑:

@FindBy(css = ".hb-card .hb-card-header .hb-card-tittel span")
private lateinit var endreBoligModal: MutableList<WebElement>

这里的CSS选择器通过空格表示后代元素关系,和链式定位的逻辑完全等价。

注意事项

  • 必须确保Page Factory初始化时,已经调用PageFactory.initElements(driver, this),否则注解定义的元素不会被实例化。
  • 变量类型用MutableList<WebElement>对应findElements的返回结果,和你原来的代码保持一致。

内容的提问来源于stack exchange,提问作者user9347168

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 09:05:26