package lxrod import "github.com/go-rod/rod" // RaceVisibleElement 创建用于使用 css 选择器查询可见元素的 race 分支。 func RaceVisibleElement(r *rod.RaceContext, selector string) *rod.RaceContext { return r.ElementFunc(VisibleElement(selector)) } // RaceVisibleElementX 创建用于使用 xPath 查询可见元素的 race 分支。 func RaceVisibleElementX(r *rod.RaceContext, xPath string) *rod.RaceContext { return r.ElementFunc(VisibleElementX(xPath)) } // VisibleElement 是用于 [rod.RaceContext.ElementFunc] 的函数,用于使用 css 选择器查找可见元素。 func VisibleElement(selector string) func(*rod.Page) (*rod.Element, error) { return func(p *rod.Page) (*rod.Element, error) { e, err := p.Element(selector) if err != nil { return nil, err } ok, err := e.Visible() if err != nil { return nil, err } if !ok { return nil, &rod.ElementNotFoundError{} } return e, nil } } // VisibleElementX 是用于 [rod.RaceContext.ElementFunc] 的函数,用于使用 xPath 查找可见元素。 func VisibleElementX(xPath string) func(*rod.Page) (*rod.Element, error) { return func(p *rod.Page) (*rod.Element, error) { e, err := p.ElementX(xPath) if err != nil { return nil, err } ok, err := e.Visible() if err != nil { return nil, err } if !ok { return nil, &rod.ElementNotFoundError{} } return e, nil } }