1
resposta

Como retornar se um elemento está habilitado ou não na página com WebDriver no C#?

Prezado Daniel,

o DISPLAYED do Chromedriver não está retornando True or False. estou tendo muito problema, para testar uma página HTML que tem vários campos de formulários ocultos, mas antes de preencher e testar se o valor foi preenchido o webdriver precisa verificar primeiro se o campo está habilitado na página HTML e ao executar o teste do código abaixo, o sistema informa " Message: OpenQA.Selenium.NoSuchElementException : no such element: Unable to locate element: {"method":"css selector","selector":"#WUC_FornecedorCadastro1_txtInscrMun"} (Session info: chrome=81.0.4044.138).

Por favor, o que está errado no meu código abaixo, obrigado.

Na classe DSL:

public class dsl { private IWebDriver driver; public dsl(IWebDriver driver) { this.driver = driver; }

    public void escrever(By by, string texto)
    {
        driver.FindElement(by).Clear();
        driver.FindElement(by).SendKeys(texto);
    }

    public void escrever(string id_campo, string texto)
    {
        escrever(By.Id(id_campo), texto);
    }

    public bool esteElementEstaHabilitado(string nomeElemento)
    {
       //deve retornar True or False se o elemento do campo está ativo 
        return (driver.FindElement(By.Id(nomeElemento)).Displayed);
    }

===================================================

Criei uma Página PageObject "poAbaDadosCadastrais"

public class poAbaDadosCadastrais

{
    private dsl Dsl;
    private IWebDriver driver;
    private string byTxtInscricaoEstadual = "WUC_FornecedorCadastro1_txtInscrEst";
    private string byTxtInscricaoMunicipal = "WUC_FornecedorCadastro1_txtInscrMun";
    private string byRdoTipoDeRegistro = "WUC_FornecedorCadastro1_rb_RS";

public void PreencherInscricao(string estadual,string municipal) { if (Dsl.esteElementEstaHabilitado(byTxtInscricaoEstadual)) { //Se este campo estiver visível na página html, preencha o campo Dsl.escrever(byTxtInscricaoEstadual, estadual); }

        if (Dsl.esteElementEstaHabilitado(byTxtInscricaoMunicipal))
        {
            //Se este campo estiver visível na página html, preencha o campo
            Dsl.escrever(byTxtInscricaoMunicipal, municipal);
        }
    }

===============================================

Na página de Teste

using OpenQA.Selenium; using SystemCaufesp.Fixtures; using Xunit; using SystemCaufesp.PageObject; using SystemCaufesp.Dsl;

namespace SystemCadastroDeEntidades { [Collection("Chrome Driver")] public class TestarAbaDadosCadastrais { private readonly IWebDriver driver; private dsl dsl; private poAbaDadosCadastrais poAbaDadosCadastrais;

    public TestarAbaDadosCadastrais(TestFixture fixture)
    {
        driver = fixture.Driver;
        dsl = new dsl(driver);
        poAbaDadosCadastrais = new poAbaDadosCadastrais(driver);
    }

    [Fact]
    public void TestarPreechimentoDaAbaDadosCadastrais()
    {
        poAbaDadosCadastrais.PreencherInscricao("123456";"456789");
    }
1 resposta
O post foi fechado por inatividade. Para continuar o assunto, recomendamos criar um novo tópico. Bons Estudos!