This commit is contained in:
Haiping Chen 2024-01-27 09:20:02 -06:00
parent c42af085fb
commit 2445cb31e0
4 changed files with 26 additions and 19 deletions

View file

@ -57,7 +57,10 @@ public partial class PlaywrightWebDriver
} }
var driverService = _services.GetRequiredService<WebDriverService>(); var driverService = _services.GetRequiredService<WebDriverService>();
var htmlElementContextOut = await driverService.LocateElement(agent, string.Join("", str), context.ElementName, messageId); var htmlElementContextOut = await driverService.LocateElement(agent,
string.Join("", str),
context.ElementName,
messageId);
ILocator element = Locator(htmlElementContextOut); ILocator element = Locator(htmlElementContextOut);
try try

View file

@ -1,11 +1,11 @@
using BotSharp.Plugin.WebDriver.Services;
namespace BotSharp.Plugin.WebDriver.Drivers.PlaywrightDriver; namespace BotSharp.Plugin.WebDriver.Drivers.PlaywrightDriver;
public partial class PlaywrightWebDriver public partial class PlaywrightWebDriver
{ {
public async Task ClickElement(Agent agent, BrowsingContextIn context, string messageId) public async Task ClickElement(Agent agent, BrowsingContextIn context, string messageId)
{ {
var driverService = _services.GetRequiredService<WebDriverService>();
// Retrieve the page raw html and infer the element path // Retrieve the page raw html and infer the element path
var body = await _instance.Page.QuerySelectorAsync("body"); var body = await _instance.Page.QuerySelectorAsync("body");
@ -23,18 +23,19 @@ public partial class PlaywrightWebDriver
var text = await btn.TextContentAsync(); var text = await btn.TextContentAsync();
var name = await btn.GetAttributeAsync("name"); var name = await btn.GetAttributeAsync("name");
var id = await btn.GetAttributeAsync("id"); var id = await btn.GetAttributeAsync("id");
str.Add($"<button name='{name}' id='{id}'>{text}</button>"); str.Add(driverService.AssembleMarkup("button", new MarkupProperties
}
var driverService = _services.GetRequiredService<WebDriverService>();
var htmlElementContextOut = await driverService.LocateElement(agent, string.Join("", str), context.ElementName, messageId);
var tags = await _instance.Page.QuerySelectorAllAsync(htmlElementContextOut.TagName);
var button = tags[htmlElementContextOut.Index];
if (button.AsElement() == null)
{ {
throw new Exception($"Can't find web element {context.ElementName}"); Id = id,
Name = name,
Text = text
}));
} }
await button.ClickAsync();
var htmlElementContextOut = await driverService.LocateElement(agent,
string.Join("", str),
context.ElementName,
messageId);
ILocator element = Locator(htmlElementContextOut);
await element.ClickAsync();
} }
} }

View file

@ -42,7 +42,10 @@ public partial class PlaywrightWebDriver
})); }));
} }
var htmlElementContextOut = await driverService.LocateElement(agent, string.Join("", str), context.ElementName, messageId); var htmlElementContextOut = await driverService.LocateElement(agent,
string.Join("", str),
context.ElementName,
messageId);
ILocator element = Locator(htmlElementContextOut); ILocator element = Locator(htmlElementContextOut);
try try

View file

@ -2,8 +2,8 @@ namespace BotSharp.Plugin.WebDriver.Models;
internal class MarkupProperties internal class MarkupProperties
{ {
public string Id { get; set; } public string? Id { get; set; }
public string Name { get; set; } public string? Name { get; set; }
public string Type { get; set; } public string? Type { get; set; }
public string Text { get; set; } public string? Text { get; set; }
} }