Merge pull request #1096 from visagang/features/vguruparan

Add hook to handle locate element for PlayWright
This commit is contained in:
iceljc 2025-07-10 17:28:26 -05:00 committed by GitHub
commit 5d1c1c1348
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
4 changed files with 8 additions and 1 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

@ -28,7 +28,7 @@ public class UtilWebCloseBrowserFn : IFunctionCallback
ContextId = webDriverService.GetMessageContext(message)
};
await browser.CloseBrowser(message.CurrentAgentId);
await browser.CloseBrowser(msg.ContextId);
message.Content = $"Browser closed.";

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")}. ";