Fix Password input issue.

This commit is contained in:
Haiping Chen 2024-02-12 18:14:01 -06:00
parent c73a713e15
commit eb462f32c6
5 changed files with 46 additions and 5 deletions

View file

@ -17,15 +17,14 @@ public partial class PlaywrightWebDriver
if (password == null)
{
throw new Exception($"Can't locate the web element {actionParams.Context.ElementName}.");
_logger.LogError($"Can't locate the password element by '{actionParams.Context.ElementName}'");
return false;
}
var config = _services.GetRequiredService<IConfiguration>();
try
{
var key = actionParams.Context.Password.Replace("@", "").Replace(".", ":");
var value = config.GetValue<string>(key);
await password.FillAsync(value);
await password.FillAsync(actionParams.Context.Password);
return true;
}
catch (Exception ex)

View file

@ -9,6 +9,7 @@ public partial class PlaywrightWebDriver
.ScreenshotAsync(new PageScreenshotOptions
{
Path = path,
Animations = ScreenshotAnimations.Disabled
});
return "data:image/png;base64," + Convert.ToBase64String(bytes);

View file

@ -21,11 +21,13 @@ public class InputUserPasswordFn : IFunctionCallback
var agentService = _services.GetRequiredService<IAgentService>();
var agent = await agentService.LoadAgent(message.CurrentAgentId);
var webDriverService = _services.GetRequiredService<WebDriverService>();
args.Password = webDriverService.ReplaceToken(args.Password);
var result = await _browser.InputUserPassword(new BrowserActionParams(agent, args, convService.ConversationId, message.MessageId));
message.Content = result ? "Input password successfully" : "Input password failed";
var webDriverService = _services.GetRequiredService<WebDriverService>();
var path = webDriverService.GetScreenshotFilePath(message.MessageId);
message.Data = await _browser.ScreenshotAsync(convService.ConversationId, path);

View file

@ -0,0 +1,29 @@
namespace BotSharp.Plugin.WebDriver.Functions;
public class ScreenshotFn : IFunctionCallback
{
public string Name => "take_screenshot";
private readonly IServiceProvider _services;
private readonly IWebBrowser _browser;
public ScreenshotFn(IServiceProvider services,
IWebBrowser browser)
{
_services = services;
_browser = browser;
}
public async Task<bool> Execute(RoleDialogModel message)
{
var convService = _services.GetRequiredService<IConversationService>();
var webDriverService = _services.GetRequiredService<WebDriverService>();
var path = webDriverService.GetScreenshotFilePath(message.MessageId);
message.Data = await _browser.ScreenshotAsync(convService.ConversationId, path);
message.Content = "Took screenshot successfully";
return true;
}
}

View file

@ -37,6 +37,16 @@
"required": [ "url" ]
}
},
{
"name": "take_screenshot",
"description": "Tak screenshot to show current page screen",
"parameters": {
"type": "object",
"properties": {
},
"required": []
}
},
{
"name": "click_button",
"description": "Click a button in a web page.",