Add hook to handle locate element for PlayWright

This commit is contained in:
Visagan Guruparan 2025-07-10 14:22:54 -05:00
parent 5adaa3ac96
commit 16300b9a1d
3 changed files with 7 additions and 0 deletions

View file

@ -5,4 +5,5 @@ namespace BotSharp.Abstraction.Browsing;
public interface IWebDriverHook
{
Task<List<string>> GetUploadFiles(MessageInfo message);
Task OnLocateElement(MessageInfo message, string content);
}

View file

@ -114,6 +114,11 @@ public partial class PlaywrightWebDriver
// fix if html has &
result.Body = HttpUtility.HtmlDecode(html);
result.IsSuccess = true;
var hooks = _services.GetServices<IWebDriverHook>();
foreach (var hook in hooks)
{
await hook.OnLocateElement(message, result.Body);
}
}
else if (count > 1)
{

View file

@ -30,6 +30,7 @@ public class UtilWebLocateElementFn : IFunctionCallback
MessageId = message.MessageId,
ContextId = webDriverService.GetMessageContext(message)
};
browser.SetServiceProvider(_services);
var result = await browser.LocateElement(msg, locatorArgs);
message.Content = $"Locating element {(result.IsSuccess ? "success" : "failed")}. ";