Skip to content

Commit c84da67

Browse files
author
Haiping Chen
committed
Add screenshots.
1 parent 4a1ae03 commit c84da67

17 files changed

+96
-9
lines changed

src/Plugins/BotSharp.Plugin.WebDriver/Drivers/IWebBrowser.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ namespace BotSharp.Plugin.WebDriver.Drivers;
33
public interface IWebBrowser
44
{
55
Task LaunchBrowser(string? url);
6+
Task<string> ScreenshotAsync(string path);
67
Task<bool> InputUserText(BrowserActionParams actionParams);
78
Task<bool> InputUserPassword(BrowserActionParams actionParams);
89
Task<bool> ClickButton(BrowserActionParams actionParams);

src/Plugins/BotSharp.Plugin.WebDriver/Drivers/PlaywrightDriver/PlaywrightInstance.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ public async Task InitInstance()
3232
string tempFolderPath = $"{Path.GetTempPath()}\\playwright\\{Guid.NewGuid()}";
3333
_context = await _playwright.Chromium.LaunchPersistentContextAsync(tempFolderPath, new BrowserTypeLaunchPersistentContextOptions
3434
{
35-
Headless = false,
35+
Headless = true,
3636
Channel = "chrome",
3737
IgnoreDefaultArgs = new[]
3838
{
Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,13 @@
1-
using Microsoft.Extensions.Logging;
21

32
namespace BotSharp.Plugin.WebDriver.Drivers.PlaywrightDriver;
43

54
public partial class PlaywrightWebDriver
65
{
76
public async Task CloseBrowser()
87
{
9-
// await _instance.Browser.CloseAsync();
10-
_logger.LogInformation($"Closed browser with page {_instance.Page.Url}");
8+
if (_instance.Context != null)
9+
{
10+
await _instance.Context.CloseAsync();
11+
}
1112
}
1213
}

src/Plugins/BotSharp.Plugin.WebDriver/Drivers/PlaywrightDriver/PlaywrightWebDriver.ExtractData.cs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,9 @@ public partial class PlaywrightWebDriver
55
public async Task<string> ExtractData(BrowserActionParams actionParams)
66
{
77
await _instance.Page.WaitForLoadStateAsync(LoadState.DOMContentLoaded);
8+
await _instance.Page.WaitForLoadStateAsync(LoadState.NetworkIdle);
9+
10+
await Task.Delay(3000);
811

912
// Retrieve the page raw html and infer the element path
1013
var body = await _instance.Page.QuerySelectorAsync("body");
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
2+
namespace BotSharp.Plugin.WebDriver.Drivers.PlaywrightDriver;
3+
4+
public partial class PlaywrightWebDriver
5+
{
6+
public async Task<string> ScreenshotAsync(string path)
7+
{
8+
var bytes = await _instance.Page.ScreenshotAsync(new PageScreenshotOptions
9+
{
10+
Path = path,
11+
});
12+
13+
return Convert.ToBase64String(bytes);
14+
}
15+
}

src/Plugins/BotSharp.Plugin.WebDriver/Functions/ChangeCheckboxFn.cs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,11 @@ public async Task<bool> Execute(RoleDialogModel message)
2424

2525
message.Content = result ? "Success" : "Failed";
2626

27+
var webDriverService = _services.GetRequiredService<WebDriverService>();
28+
var path = webDriverService.NewScreenshotFilePath(message.MessageId);
29+
30+
message.Data = await _browser.ScreenshotAsync(path);
31+
2732
return true;
2833
}
2934
}

src/Plugins/BotSharp.Plugin.WebDriver/Functions/ChangeListValueFn.cs

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,12 @@ public async Task<bool> Execute(RoleDialogModel message)
2323
var result = await _browser.ChangeListValue(new BrowserActionParams(agent, args, message.MessageId));
2424

2525
message.Content = result ? "Success" : "Failed";
26-
26+
27+
var webDriverService = _services.GetRequiredService<WebDriverService>();
28+
var path = webDriverService.NewScreenshotFilePath(message.MessageId);
29+
30+
message.Data = await _browser.ScreenshotAsync(path);
31+
2732
return true;
2833
}
2934
}

src/Plugins/BotSharp.Plugin.WebDriver/Functions/CheckRadioButtonFn.cs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,11 @@ public async Task<bool> Execute(RoleDialogModel message)
2424

2525
message.Content = result ? "Success" : "Failed";
2626

27+
var webDriverService = _services.GetRequiredService<WebDriverService>();
28+
var path = webDriverService.NewScreenshotFilePath(message.MessageId);
29+
30+
message.Data = await _browser.ScreenshotAsync(path);
31+
2732
return true;
2833
}
2934
}

src/Plugins/BotSharp.Plugin.WebDriver/Functions/ClickButtonFn.cs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,11 @@ public async Task<bool> Execute(RoleDialogModel message)
2424

2525
message.Content = result ? "Success" : "Failed";
2626

27+
var webDriverService = _services.GetRequiredService<WebDriverService>();
28+
var path = webDriverService.NewScreenshotFilePath(message.MessageId);
29+
30+
message.Data = await _browser.ScreenshotAsync(path);
31+
2732
return true;
2833
}
2934
}

src/Plugins/BotSharp.Plugin.WebDriver/Functions/ClickElementFn.cs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,11 @@ public async Task<bool> Execute(RoleDialogModel message)
2424

2525
message.Content = result ? "Success" : "Failed";
2626

27+
var webDriverService = _services.GetRequiredService<WebDriverService>();
28+
var path = webDriverService.NewScreenshotFilePath(message.MessageId);
29+
30+
message.Data = await _browser.ScreenshotAsync(path);
31+
2732
return true;
2833
}
2934
}

0 commit comments

Comments
 (0)