Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

150
Visualizações
Selenium call async JavaScript in C#

I need to call async JavaScript function at get the function value in Selenium. I tried but I am getting Script timeout error.

My JavaScript Code is

async function SnapScreen() {
    var node = document.getElementById("videoContainer");

    var result = await domtoimage.toPng(node);

    console.log(result);

    return result;
}

I have tried

1) Driver?.ExecuteJavaScript("ScreenToBase64()");
2) IJavaScriptExecutor js = (IJavaScriptExecutor)driver;
var obj = js.ExecuteAsyncScript(script, args);

I am getting Script Timeout and never ge the value back.

3) var wait = new WebDriverWait(Driver, TimeSpan.FromMinutes(3));
var data = wait.Until(driver => driver.ExecuteJavaScript<T>(script, args));
4) var wait = new WebDriverWait(Driver, TimeSpan.FromMinutes(3));
IJavaScriptExecutor js = (IJavaScriptExecutor)driver;
var data = wait.Until(driver => js.ExecuteAsyncScript(script, args));

and my Driver and EdgeOptions are

var timeSpan = TimeSpan.FromMinutes(3);

var edgeDriverService = EdgeDriverService.CreateDefaultService(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location));

edgeDriverService.HideCommandPromptWindow = true;

var edgeOptions = new EdgeOptions { PageLoadStrategy = PageLoadStrategy.Eager };

edgeOptions.AddArgument("headless");
edgeOptions.AddArgument("no-sandbox");
edgeOptions.AddArgument("enable-javascript");
edgeOptions.AddArgument("inprivate");
edgeOptions.AddArgument("whitelisted-ips=\"\"");

Driver = new EdgeDriver(edgeDriverService, edgeOptions, timeSpan);

Driver.Manage().Window.Size = new System.Drawing.Size(1920, 1080);
Driver.Manage().Timeouts().AsynchronousJavaScript.Add(timeSpan);
Driver.Manage().Timeouts().ImplicitWait.Add(timeSpan);
Driver.Manage().Timeouts().PageLoad.Add(timeSpan);

I want to like the method or extension like following

var result=await Driver.ExecuteJavaScriptAsync<T>(script,args)
(or)
var result=await Driver.ExecuteJavaScriptAsync<T>(script,waitTime,args)

So that I can use it in the future.

For more reference my backend is blazor.

about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

For non-async you have to "return" the data.

return ScreenToBase64()

For async arguments[0] (or higher if you pass variables) should be the resolver so you want to:

ScreenToBase64().then(arguments[0])
about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda