JavascriptLibrary no Webdriver com C#

Olá @Elias-Nogueira ! Encontrei a resposta do desafio Selenium “Auto preenchimento​ de campos” em Java, porém utilizo C# e estou com dificuldades em utilizar a JavascriptLibrary. Por favor, pode me ajudar em como adaptar o código da resposta ao final da página para o C#?

http://www.eliasnogueira.com/arquivos_blog/selenium/desafio/resultados/4desafio/resposta.php

Obrigada


Carol Ciola

Oi!
A biblioteca C# possui a mesma classe…
https://seleniumhq.github.io/selenium/docs/api/dotnet/html/M_Selenium_Internal_SeleniumEmulation_JavaScriptLibrary_CallEmbeddedSelenium.htm

O que está acontecendo na tua transição de Java para C#?


@eliasnogueira

Ao declarar
using OpenQA.Selenium.Internal.SeleniumEmulation.JavascriptLibrary;
o código fica sublinhado em vermelho, não sei se faltou importar algum pacote no NuGet (utilizo NUnit).

Com isso, não consigo declarar o código abaixo sem erros:

        // dispara o evento onblur do campo cep
        IWebElement cep = driver.FindElement(By.Id("cep"));
        JavaScriptLibrary jsLibrary = new JavaScriptLibrary();
        jsLibrary.callEmbeddedSelenium(driver, "doFireEvent", cep, "blur");


Carol Ciola

@CarolCiola Qual o erro que ele mostra (o sublinhado em vermelho)?
Essa classe existe na biblioteca (só não sei a partir de qual versão), mas é bom verificar qual a versão da biblioteca do Selenium tu estás utilizando.


@eliasnogueira

O sublinhado é no trencho “SeleniumEmulation”, diz: The type or namespace name ‘SeleniumEmulation’ does not exist in the namespace ‘OpenQA.Selenium.Internal’ (are you missing an assembly reference?)

O Selenium Webdriver que utilizo está na versão 3.0.1


Carol Ciola

@CarolCiola Estranho… Consultei a API do C# e tem esta classe lá. Mas a versão do C# na página oficial está no 3.0.0 (dá uma olhada acessando http://www.seleniumhq.org/download)

Talvez seja alguma dependência que tu tenha que instalar pelo NuGet.

Eu tentaria duas alternativas:

  1. Voltar para a versão 3.0.0 e ver se ele reconhece a classe
  2. Revisar o que o NuGet faz de bibliotecas do Selenium. Tem pelo menos 4 packages lá
    https://www.nuget.org/profiles/selenium


@eliasnogueira

@CarolCiola lembro no que visual studio, além de adicionar as referências no projeto via Nuget, você também deve adicionar as dlls no Reference do projeto específico.

Caso a dll não esteja no diretório, dá erro de compilação

Qualquer dá uma olhadinha aqui: https://msdn.microsoft.com/en-us/library/wkze6zky.aspx

Pessoal, consegui a solução com o auxílio de um colega de trabalho.

Nem precisei utilizar a JavaScriptLibrary, utilizei o próprio JavaScriptExecutor para executar o blur do campo CEP.

[TestFixture]
public class Programa
{
     ...
     IJavaScriptExecutor js;
     ...

    [Test]


    public void MeuTeste()
    {
        js = (IJavaScriptExecutor)driver;
        ...   
        driver.FindElement(By.Id("cep")).Click();
        driver.FindElement(By.Id("cep")).SendKeys(CEP);            
        Thread.Sleep(1000);
        js.ExecuteScript("$('#cep').blur()");
    }

Grata pelo auxílio!


Carol Ciola

Log in to reply

Looks like your connection to Agile Testers was lost, please wait while we try to reconnect.