lwb/element.go

40 lines
630 B
Go
Raw Permalink Normal View History

2024-12-13 21:33:27 +01:00
package lwb
import (
"errors"
"strings"
"golang.org/x/net/html"
)
type Element struct {
node *html.Node
browser *Browser
}
var ErrorNotClickable = errors.New("element is not clickable")
func (self *Element) Click() error {
for e := self.node; e != nil; e = e.Parent {
if e.Type != html.ElementNode {
continue
}
if strings.ToLower(e.Data) == "a" {
for _, a := range e.Attr {
if a.Key == "href" {
return self.browser.Get(a.Val)
}
}
}
}
return ErrorNotClickable
}
2025-02-06 19:31:32 +01:00
func (self *Element) TextContent() string {
if self == nil {
return ""
}
return strings.TrimSpace(self.node.Data)
}