Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

[Sugestão] Problema ao selecionar Categoria[Resolvido]

Baseado nos posts do Jonas e do Marcelo com ajuda do Anderson, criei a seguinte solução para o problema de não conseguir selecionar a categoria: Busquei o iput de categoria por uma de suas classes: byInputCategoria = By.ClassName("select-dropdown"); Depois busquei todos os spans da página já que o texto ''Item de Colecionador" se encontra dentro de uma span: bytSpanCaterorias = By.TagName("span"); Ao preencher o formulário, primeiro fiz a ação do click no input de categoria: driver.FindElement(byInputCategoria).Click(); , depois busquei em todos os span por qual possuia o texto do parâmetro 'categoria' e realizei um novo click: var categorias = driver.FindElements(bytSpanCaterorias); foreach ( var span in categorias ) { if( span.Text == categoria ) span.Click();

Código completo:

using OpenQA.Selenium;
using System;

namespace Alura.LeilaoOnline.Selenium.PageObjects
{
    public class NovoLeilaoPO
    {
        private IWebDriver driver;

        private By byInputTitulo;
        private By byInputDescricao;
        private By byInputCategoria;
        private By bytSpanCaterorias;
        private By byInputValorInicial;
        private By byInputImagem;
        private By byInputInicioPregao;
        private By byInputTerminoPregao;

        public NovoLeilaoPO(IWebDriver driver)
        {
            this.driver = driver;

            byInputTitulo = By.Id("Titulo");
            byInputDescricao = By.Id("Descricao");
            byInputCategoria = By.ClassName("select-dropdown");
            bytSpanCaterorias = By.TagName("span");
            byInputValorInicial = By.Id("ValorInicial");
            byInputImagem = By.Id("ArquivoImagem");
            byInputInicioPregao = By.Id("InicioPregao");
            byInputTerminoPregao = By.Id("TerminoPregao");
        }

        public void Visitar()
        {
            driver.Navigate().GoToUrl("https://localhost:5001/Leiloes/Novo");
        }

        public void PreencheFormulario(
            string titulo,
            string descricao,
            string categoria,
            double valor,
            string imagem,
            DateTime inicio,
            DateTime termino
            )
        {
            driver.FindElement(byInputTitulo).SendKeys(titulo);
            driver.FindElement(byInputDescricao).SendKeys(descricao);
            driver.FindElement(byInputCategoria).Click();
            var categorias = driver.FindElements(bytSpanCaterorias);
            foreach ( var span in categorias ) { 
                if( span.Text == categoria ) span.Click();                
            }
            driver.FindElement(byInputValorInicial).SendKeys(valor.ToString());
            driver.FindElement(byInputImagem).SendKeys(imagem);
            driver.FindElement(byInputInicioPregao).SendKeys(inicio.ToString("dd/MM/yyyy"));
            driver.FindElement(byInputTerminoPregao).SendKeys(termino.ToString("dd/MM/yyyy"));
        }
    }
}
1 resposta
solução!

Oi, Walter, tudo bem?

Muito obrigado por compartilhar essa informação. Tenho certeza que vai ajudar os demais estudantes que estão estudando este mesmo assunto.

Continue mergulhando em seus estudos e caso tenha dúvidas, conte com o fórum!

Abraços e bons estudos!