Fix Password input issue.
This commit is contained in:
parent
c73a713e15
commit
eb462f32c6
|
|
@ -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)
|
||||
|
|
|
|||
|
|
@ -9,6 +9,7 @@ public partial class PlaywrightWebDriver
|
|||
.ScreenshotAsync(new PageScreenshotOptions
|
||||
{
|
||||
Path = path,
|
||||
Animations = ScreenshotAnimations.Disabled
|
||||
});
|
||||
|
||||
return "data:image/png;base64," + Convert.ToBase64String(bytes);
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
|
@ -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.",
|
||||
|
|
|
|||
Loading…
Reference in a new issue