4
respostas

Uso do DetalhesLeilaoPage

Pessoal, não entendi o motivo de utilizar DetalhesLeilaoPage no exemplo abaixo? Estou adaptando esse exemplo para clicar na primeira notícia em uma página, mas gostaria de salvar a url dessa notícia em uma string para testar mais elementos nesta página de notícias, não é uma url fixa da notícia e não consigo adaptar o código porque não entendi a função o "public DetalhesLeilaoPage Detalhes"

   class LeiloesPage
    {
    public DetalhesLeilaoPage Detalhes (int posicao)
        {
            driver.FindElements(By.LinkText("exibir"))[posicao - 1].Click();
            return new DetalhesLeilaoPage(driver);
        }
    }
/*[TestFixture]
    class LanceSystemTest
    {
        [Test]
        public void DeveDarLance()
        {
            DetalhesLeilaoPage lances = leiloes.Detalhes(1);

            lances.Lance("Paulo Henrique", 150);

            Assert.IsTrue(lances.ExisteLance("Paulo Henrique", 150));
        }

    }*/
4 respostas

Boa noite, Amanda! Como vai?

A página de leilões tem uma tabela com uma listagem de leilões cadastrados. O método Detalhes(int posicao) é responsável por receber um parâmetro posicao indicando qual o leilão que se deseja selecionar e retorna um objeto do tipo DetalhesLeilaoPage que é responsável por gerenciar a página de detalhes do leilão.

Pegou a ideia? Qualquer coisa é só falar!

Grande abraço e bons estudos, minha aluna!

Bom dia Gabriel, tudo bem? Obrigada pela explicação, entendi a ideia. Alguma sugestão para trabalhar com urls variáveis? Desde selecionar e clicar a salvar a url em uma variável? Obrigada. Até mais!

Opa, Amanda! Tudo ótimo por aqui!

Vamos trocar ideia focando no seu contexto! Quando vc clicar numa notícia vc vai para a página da própria notícia, que seria representada na sua aplicação por um objeto do tipo DetalheNoticiaPage, por exemplo! Aí vc pode fazer o seguinte:

  • Nessa classe, vc teria um atributo que representa a URL da notícia em questão.
  • Essa URL da notícia poderia ser extraída logo antes de clicar no link, bastando usar o Selenium para isso.
  • Dessa forma, vc pode passar a URL para o objeto do tipo DetalheNoticiaPage exatamente no momento de sua criação!

O que vc acha da ideia? Faz sentido pra vc? Qualquer coisa é só falar!

Grande abraço e bons estudos, minha aluna!

Bom dia Gabriel! Tudo bem? Não consegui desenvolver a ideia, entendi sobre extrair a url antes do click, mas me perdi ao tentar passar essa url através de um atributo para o objeto DetalheInternaPage, colei a parte do código relacionada ao clique na matéria ou interna, mas essa parte de criar o atributo no objeto DetalheInternaPage para receber a url extraída antes do clique eu não consegui.

class HomePage
    {
        private IWebDriver driver;

        public HomePage(IWebDriver driver)
        {
            this.driver = driver;
        }

        public void Visita()
        {
            driver.Navigate().GoToUrl(url da home aqui);
        }

        public DetalheInternaPage Detalhes(int posicao)
        {
            //string interna = driver.FindElements(By.ClassName("mozaic-news"))[posicao - 1].GetAttribute("href");
            driver.FindElements(By.ClassName("mosaic-news"))[posicao - 1].Click();
            return new DetalheInternaPage(driver);
        }
[TestFixture]
    class HomeSystemTest
    {
        private HomePage home;
        private ChromeDriver driver;

        [SetUp]
        public void AntesDosTestes()
        {
            driver = new ChromeDriver(@"C:\Users\amanda\Desktop\");
            home = new HomePage(driver);
        }

        [Test]
        public void AbrirInterna()
        {
            home.Visita();
            DetalheInternaPage internas = home.Detalhes(1);
        }
    }
class DetalheInternaPage
    {
        private IWebDriver driver;

        public DetalheInternaPage(IWebDriver driver)
        {
            this.driver = driver;
        }
    }