using Microsoft.Extensions.Logging; namespace BotSharp.Plugin.WebDriver.Drivers.PlaywrightDriver; public partial class PlaywrightWebDriver { public async Task ChangeListValue(BrowserActionParams actionParams) { await _instance.Page.WaitForLoadStateAsync(LoadState.DOMContentLoaded); await _instance.Page.WaitForLoadStateAsync(LoadState.NetworkIdle); // Retrieve the page raw html and infer the element path var body = await _instance.Page.QuerySelectorAsync("body"); var str = new List(); var inputs = await body.QuerySelectorAllAsync("select"); foreach (var input in inputs) { var html = "(); var htmlElementContextOut = await driverService.InferElement(actionParams.Agent, string.Join("", str), actionParams.Context.ElementName, actionParams.MessageId); ILocator element = Locator(htmlElementContextOut); try { var isVisible = await element.IsVisibleAsync(); if (!isVisible) { // Select the element you want to make visible (replace with your own selector) var control = await _instance.Page.QuerySelectorAsync($"#{htmlElementContextOut.ElementId}"); // Show the element by modifying its CSS styles await _instance.Page.EvaluateAsync(@"(element) => { element.style.display = 'block'; element.style.visibility = 'visible'; }", control); } await element.FocusAsync(); await element.SelectOptionAsync(new SelectOptionValue { Label = actionParams.Context.UpdateValue }); // Click on the blank area to activate posting // await body.ClickAsync(); if (!isVisible) { // Select the element you want to make visible (replace with your own selector) var control = await _instance.Page.QuerySelectorAsync($"#{htmlElementContextOut.ElementId}"); // Show the element by modifying its CSS styles await _instance.Page.EvaluateAsync(@"(element) => { element.style.display = 'none'; element.style.visibility = 'hidden'; }", control); } return true; } catch (Exception ex) { _logger.LogError(ex.Message); } return false; } }