43 lines
1.4 KiB
C#
43 lines
1.4 KiB
C#
|
|
namespace BotSharp.Plugin.WebDriver.UtilFunctions;
|
||
|
|
|
||
|
|
public class UtilWebActionOnElementFn : IFunctionCallback
|
||
|
|
{
|
||
|
|
public string Name => "util-web-action_on_element";
|
||
|
|
public string Indication => "Do action on element.";
|
||
|
|
private readonly IServiceProvider _services;
|
||
|
|
private readonly ILogger _logger;
|
||
|
|
|
||
|
|
public UtilWebActionOnElementFn(
|
||
|
|
IServiceProvider services,
|
||
|
|
ILogger<UtilWebActionOnElementFn> logger)
|
||
|
|
{
|
||
|
|
_services = services;
|
||
|
|
_logger = logger;
|
||
|
|
}
|
||
|
|
|
||
|
|
public async Task<bool> Execute(RoleDialogModel message)
|
||
|
|
{
|
||
|
|
var locatorArgs = JsonSerializer.Deserialize<ElementLocatingArgs>(message.FunctionArgs);
|
||
|
|
var actionArgs = JsonSerializer.Deserialize<ElementActionArgs>(message.FunctionArgs);
|
||
|
|
if (actionArgs.Action == BroswerActionEnum.InputText)
|
||
|
|
{
|
||
|
|
actionArgs.PressKey = "Enter";
|
||
|
|
}
|
||
|
|
actionArgs.WaitTime = 2;
|
||
|
|
|
||
|
|
var conv = _services.GetRequiredService<IConversationService>();
|
||
|
|
|
||
|
|
var browser = _services.GetRequiredService<IWebBrowser>();
|
||
|
|
var result = await browser.ActionOnElement(new MessageInfo
|
||
|
|
{
|
||
|
|
AgentId = message.CurrentAgentId,
|
||
|
|
MessageId = message.MessageId,
|
||
|
|
ContextId = message.CurrentAgentId,
|
||
|
|
}, locatorArgs, actionArgs);
|
||
|
|
|
||
|
|
message.Content = $"{actionArgs.Action} executed {(result.IsSuccess ? "success" : "failed")}";
|
||
|
|
|
||
|
|
return true;
|
||
|
|
}
|
||
|
|
}
|