mirror of
https://github.com/MontFerret/ferret.git
synced 2025-08-15 20:02:56 +02:00
Fixed element not found error (#724)
This commit is contained in:
@@ -0,0 +1,8 @@
|
||||
LET url = @lab.cdn.dynamic
|
||||
LET doc = DOCUMENT(url, { driver: "cdp" })
|
||||
|
||||
LET el = ELEMENT(doc, "#do-not-exist")
|
||||
|
||||
T::NONE(el)
|
||||
|
||||
RETURN TRUE
|
@@ -0,0 +1,8 @@
|
||||
LET url = @lab.cdn.dynamic
|
||||
LET doc = DOCUMENT(url, true)
|
||||
|
||||
LET el = ELEMENT(doc, X("//*[@id='do-not-exist']"))?
|
||||
|
||||
T::NONE(el)
|
||||
|
||||
RETURN TRUE
|
8
e2e/tests/dynamic/element/siblings/next_not_found.fql
Normal file
8
e2e/tests/dynamic/element/siblings/next_not_found.fql
Normal file
@@ -0,0 +1,8 @@
|
||||
LET doc = DOCUMENT(@lab.cdn.dynamic + "/#/lists", { driver:"cdp" })
|
||||
|
||||
LET current = ELEMENT(doc, "body")
|
||||
T::NOT::NONE(current)
|
||||
LET next = current.nextElementSibling
|
||||
T::NONE(next)
|
||||
|
||||
RETURN NONE
|
8
e2e/tests/dynamic/element/siblings/prev_not_found.fql
Normal file
8
e2e/tests/dynamic/element/siblings/prev_not_found.fql
Normal file
@@ -0,0 +1,8 @@
|
||||
LET doc = DOCUMENT(@lab.cdn.dynamic + "/#/lists", { driver:"cdp" })
|
||||
|
||||
LET current = ELEMENT(doc, 'head')
|
||||
T::NOT::NONE(current)
|
||||
LET prev = current.previousElementSibling
|
||||
T::NONE(prev)
|
||||
|
||||
RETURN NONE
|
@@ -98,13 +98,17 @@ func (rt *Runtime) EvalValue(ctx context.Context, fn *Function) (core.Value, err
|
||||
return rt.resolver.ToValue(ctx, out)
|
||||
}
|
||||
|
||||
func (rt *Runtime) EvalElement(ctx context.Context, fn *Function) (drivers.HTMLElement, error) {
|
||||
func (rt *Runtime) EvalElement(ctx context.Context, fn *Function) (core.Value, error) {
|
||||
ref, err := rt.EvalRef(ctx, fn)
|
||||
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
if ref.ObjectID == nil {
|
||||
return values.None, nil
|
||||
}
|
||||
|
||||
return rt.resolver.ToElement(ctx, ref)
|
||||
}
|
||||
|
||||
|
@@ -14,27 +14,21 @@ const (
|
||||
)
|
||||
|
||||
var (
|
||||
queryCSSSelector = fmt.Sprintf(`
|
||||
queryCSSSelector = `
|
||||
(el, selector) => {
|
||||
const found = el.querySelector(selector);
|
||||
|
||||
%s
|
||||
|
||||
return found;
|
||||
}
|
||||
`,
|
||||
notFoundErrorFragment,
|
||||
)
|
||||
`
|
||||
queryXPathSelector = fmt.Sprintf(`
|
||||
(el, selector) => {
|
||||
%s
|
||||
|
||||
%s
|
||||
|
||||
return found;
|
||||
}
|
||||
`,
|
||||
xpathAsElementFragment, notFoundErrorFragment,
|
||||
xpathAsElementFragment,
|
||||
)
|
||||
)
|
||||
|
||||
|
Reference in New Issue
Block a user