Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

SendKeys não funciona para o componente Select.

Olá, na aula o componente combo é selecionado apenas com o SendKeys. Contudo o Id "Categoria" está apontando para um Select, que sempre que tento interagir diz que o elemento não está visível. Percebi que ao inspecionar o elemento, o que é visível é uma tag input e seus li's, daí precisei usar o IAction:

 private void SelecionaOpcaoCategoria(string categoria)
        {
            var comboCategoria = driver.FindElement(byInputCategoria);
            var opcaoCategoria = comboCategoria
                .FindElement(By.XPath($"//*/li/span[contains(text(),'{categoria}')]"));
            IAction acao = new Actions(driver)
                .Click(comboCategoria)
                .MoveToElement(opcaoCategoria)
                .Click(opcaoCategoria)
                .Build();
            acao.Perform();
        }
private By byInputCategoriaId;
.
.
.
byInputCategoriaId = By.Id("Categoria");
.
.
.

public void PreencherFormulario
        (
            string titulo,
            string descricao,
            string categoria,    ...

      driver.FindElement(byInputCategoriaId ).SendKeys(categoria);

O código acima não funcionou. : /

2 respostas
solução!

Eu fiz assim na minha categoria, porem, eu não precisei fazer um método com uma interaction, usei propriedade com getter usando Selenium.Suport.UI

        public IEnumerable<string> Categorias
        {
            get
            {
                var elementoCategoria = new SelectElement(driver.FindElement
                    (byInputCategoria));

                //Usar link para conseguir retornar uma lista desse IWebElements em uma lista de strings
                //Enumerada
                return elementoCategoria.Options
                    .Where(o => o.Enabled)
                    .Select(o => o.Text);

            }
        }

Aqui usei interpolação de strings

driver.FindElement(byInputCategoria).GetAttribute($"option[value={categoria}]");

Legal, nas aulas seguintes ele coloca esse problema e mostra que a solução é a que eu havia feito mesmo, interagindo com os elementos input e li. Por que no CSS o select está invisível.

select {
    display: none;
}

Daí não é possível usar o SelectElement e nem muito menos o SendKeys pra poder settar o valor do campo.

O campo de categorias do cadastro de leilões que ele disponibiliza está diferente do que ele usa em aula, no da aula não está com o 'display:none' e tem até mais uma opção no combo, a opção default.

Mas tá resolvido.

Obg.

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software