This commit is contained in:
Josh at WLTechBlog
2025-08-18 11:00:16 -05:00
parent e5f998e005
commit 4ea5615ef8
7 changed files with 422 additions and 27 deletions

View File

@@ -3564,30 +3564,84 @@ func (d *Daemon) fillFormBulk(tabID, formSelector, fieldsJSON string, timeout in
if timeout > 0 {
ctx, cancel := context.WithTimeout(context.Background(), time.Duration(timeout)*time.Second)
element, err = form.Context(ctx).Element(selector)
cancel()
// Don't cancel yet if element found - we need context for filling
if err == nil {
fieldResult.Selector = selector
// Fill the field while context is still valid
err = element.SelectAllText()
if err == nil {
err = element.Input("")
}
if err == nil {
err = element.Input(fieldValue)
}
cancel() // Now we can cancel
break
}
cancel() // Cancel if element not found
} else {
element, err = form.Element(selector)
}
if err == nil {
fieldResult.Selector = selector
break
if err == nil {
fieldResult.Selector = selector
// Fill the field
err = element.SelectAllText()
if err == nil {
err = element.Input("")
}
if err == nil {
err = element.Input(fieldValue)
}
break
}
}
}
}
// If not found in form or no form, search in entire page
if element == nil {
// Generate selectors if not already done
if selectors == nil {
selectors = []string{
fmt.Sprintf("[name='%s']", fieldName),
fmt.Sprintf("#%s", fieldName),
fmt.Sprintf("[id='%s']", fieldName),
fieldName, // In case it's already a full selector
}
}
for _, selector := range selectors {
if timeout > 0 {
ctx, cancel := context.WithTimeout(context.Background(), time.Duration(timeout)*time.Second)
element, err = page.Context(ctx).Element(selector)
cancel()
// Don't cancel yet - we need the context for filling
if err == nil {
fieldResult.Selector = selector
// Fill the field while context is still valid
err = element.SelectAllText()
if err == nil {
err = element.Input("")
}
if err == nil {
err = element.Input(fieldValue)
}
cancel() // Now we can cancel
break
}
cancel() // Cancel if element not found
} else {
element, err = page.Element(selector)
}
if err == nil {
fieldResult.Selector = selector
break
if err == nil {
fieldResult.Selector = selector
// Fill the field
err = element.SelectAllText()
if err == nil {
err = element.Input("")
}
if err == nil {
err = element.Input(fieldValue)
}
break
}
}
}
}
@@ -3599,15 +3653,6 @@ func (d *Daemon) fillFormBulk(tabID, formSelector, fieldsJSON string, timeout in
continue
}
// Fill the field
err = element.SelectAllText()
if err == nil {
err = element.Input("")
}
if err == nil {
err = element.Input(fieldValue)
}
if err != nil {
fieldResult.Error = fmt.Sprintf("failed to fill field: %v", err)
result.ErrorCount++