Selenium WebDriver C# - método [TestCaseSource] não encontrado após build

Oi @CarolCiola,

Vi que você instancia o objeto massa, mas não utiliza o objeto e sim a classe:

[TestCaseSource(typeof(massaBase.DadosTXT), "ArquivoTXT")]
    public void AutomacaoLogin(massaBase.DadosTXT coluna)

Será que tem alguma relação? Já tentou utilizar da seguinte forma:

[TestCaseSource(typeof(massaBase.DadosTXT), "ArquivoTXT")]
    // chamar o massa declarado no topo do codigo e instanciado
    // no construtor da classe Login
    public void AutomacaoLogin(massa.DadosTXT coluna)

Eu fiquei com uma dúvida, por que tem “referencia” do Webdriver na classe de criação de “massa de dados”?
Né…não consegui ligar a interação do webdriver naquela classe…sendo que ela só fornecesse dados…

Oi @samuellucas, fiz o que você sugeriu, mas não funcionou:

0_1505212699131_13ad13da-94b5-4efb-bf07-7e9a90dcb6be-image.png


Carol Ciola

Oi @ramses-saccol-de-almeida, me desculpe, não entendi bem seu questionamento. Você se refere ao trecho do construtor?

0_1505212997098_33e611ce-11e4-4fbe-aa40-da4c63a27981-image.png

Por favor, pode tentar explicar sua pergunta de outra forma? Tnks!


Carol Ciola

É exatamente isso. Essa classe serve apenas para geração de massa de dados, porque existe um construtor (ou qualquer referência) nela do webdriver? Tu pega algo (ou cria algo) usando ela? O erro não pode ser por talvez tu ter o construtor do webdriver ali, e ele não faz nada? (visto que, pelo que me parece, tu não passa nada de objetos do webdriver)

@ramses-saccol-de-almeida Entendi! E sim, realmente não fazia sentido, não tinha percebido.

Mas veja, mesmo removendo a parte do construtor e consequentemente a instância, ainda obtive o mesmo erro:

0_1505218798631_a69de46f-6fae-4324-ba26-2d22f8122c2f-image.png

0_1505218807653_19a98a26-d56c-4bff-a92d-6e3953a40fc7-image.png

0_1505218864611_9e6dd002-5221-4891-9e08-627378c48488-image.png


Carol Ciola

Tá…isso o que vou falar é um chute, mas né…
Já pensou em pegar tudo que está declarado
AutomacaoLogin(string usuarioLogin....)
E deixar no
```AutomacaoLogin(massaBase.DadosTXT coluna)````
?
Agora, me pareceu que ele tentou executar um e não achou nada para fazer…
O que pensei é

[Test]
        [TestCaseSource(typeof(massaBase.DadosTXT), "ArquivoTXT")]
        public void AutomacaoLogin(massaBase.DadosTXT coluna)
            {
            navegador.acessaURL();
            testePositivo.UsuarioSenhaValidos(usuarioLogin, senhaLogin);
            sessao.FazLogoff();
            testeNegativo.CamposEmBranco();
            testeNegativo.UsuarioInvalido(usuarioInvalido, senhaLogin);
            testeNegativo.SenhaInvalida(usuarioLogin, senhaInvalida);
            }
        }

Claro, tu precisaria dar uma ajusta nisso.
Como falei, é um chute, mas me parece que ele só tenta executar o

public void AutomacaoLogin(massaBase.DadosTXT coluna)

E não acha nada para fazer…
Tu tinha comentado que quando tu declarava tudo dentro da classe masasBase, funcionava… Pode mostrar um exemplo disso?

@ramses-saccol-de-almeida Claro, segue exemplo de um script que funciona de ponta a ponta:

main script:

using System;
using System.Text;
using System.Text.RegularExpressions;
using System.Threading;
using System.Drawing.Imaging;
using NUnit.Framework;
using OpenQA.Selenium;
using OpenQA.Selenium.Support.UI;
using OpenQA.Selenium.Chrome;
using System.IO;
using System.Collections;
using tiraScreenshot.PageObjects;
using navegador.PageObjects;
using sessao.PageObjects;
using login.PageObjects;
using cadastra.PageObjects;
using edita.PageObjects;
using inativa.PageObjects;

namespace SeleniumTests
{
    [TestFixture]
    public class Categoria
    {
    IWebDriver driver = null;
    public capturaImagem tiraScreenshot;
    public acessaSite navegador;
    public Login login;
    public sair sessao;
    public cadastraCategoria cadastra;
    public editaCategoria edita;
    public inativaCategoria inativa;

        public Categoria()
        {
        ChromeOptions options = new ChromeOptions();
        options.AddArguments("--disable-infobars");
        options.AddArguments("start-maximized");
        driver = new ChromeDriver(options);

        tiraScreenshot = new capturaImagem(driver);
        navegador = new acessaSite(driver);
        login = new Login(driver);
        sessao = new sair(driver);
        cadastra = new cadastraCategoria(driver);
        edita = new editaCategoria(driver);
        inativa = new inativaCategoria(driver);
        }

        public class DadosTXT
        {
        public string usuarioLogin { get; set; }
        public string senhaLogin { get; set; }
        public string categoria { get; set; }
        public string ordemCategoria { get; set; }
        public string categoriaEdicao { get; set; }
        public string ordemCategoriaEdicao { get; set; }
        }

        public static IEnumerable ArquivoTXT
        {
        get
            {
            string linha;
            using (FileStream lerArquivo =
            new FileStream(@"C:\Users\cciola\Documents\Visual Studio 2013\Projects\Categorias\massaBase.txt", FileMode.Open, FileAccess.Read))
                {
                StreamReader leitor = new StreamReader(lerArquivo);

                while ((linha = leitor.ReadLine()) != null)
                    {
                    var coluna = linha.Split(';');
                    yield return new DadosTXT
                    {
                        usuarioLogin = coluna[0],
                        senhaLogin = coluna[1],
                        categoria = coluna[2],
                        ordemCategoria = coluna[3],
                        categoriaEdicao = coluna[4],
                        ordemCategoriaEdicao = coluna[5]
                    };
                    }
                leitor.Close();
                lerArquivo.Close();
                }
            }
        }

        [Test]
        [TestCaseSource("ArquivoTXT")]
        public void AutomacaoCategorias(DadosTXT coluna)
        {
        AutomacaoCategorias(coluna.usuarioLogin, coluna.senhaLogin, coluna.categoria, coluna.ordemCategoria, coluna.categoriaEdicao, coluna.ordemCategoriaEdicao);
        }

        public void AutomacaoCategorias(string usuarioLogin, string senhaLogin, string categoria, string ordemCategoria, string categoriaEdicao, string ordemCategoriaEdicao)
        {
        navegador.acessaURL();
        login.fazLogin(usuarioLogin, senhaLogin);
        cadastra.acessaMenu();
        cadastra.cadastrar(categoria, ordemCategoria);
        edita.editar(categoria, ordemCategoria, categoriaEdicao, ordemCategoriaEdicao);
        inativa.inativar(categoriaEdicao);
        sessao.FazLogoff();
        }
    }
}

Este script chama as classes abaixo, mas não é relevante descrevê-las aqui:

using tiraScreenshot.PageObjects;
using navegador.PageObjects;
using sessao.PageObjects;
using login.PageObjects;
using cadastra.PageObjects;
using edita.PageObjects;
using inativa.PageObjects;


Carol Ciola

@ramses-saccol-de-almeida said in Selenium WebDriver C# - método [TestCaseSource] não encontrado após build:

Tá…isso o que vou falar é um chute, mas né…
Já pensou em pegar tudo que está declarado
AutomacaoLogin(string usuarioLogin....)
E deixar no
```AutomacaoLogin(massaBase.DadosTXT coluna)````
?

Quanto a esse chute, errou o gol haha! Fiz mas não deu certo…


Carol Ciola

Olhando o teu código, esse último, notei que tu passa só os métodos…
Será que ajustando assim:

        [Test]
        [TestCaseSource(typeof(massaBase), "ArquivoTXT")]
public void AutomacaoCategorias(DadosTXT coluna)

ou

        [TestCaseSource(typeof(massaBase), "ArquivoTXT")]
public void AutomacaoLogin(massaBase.DadosTXT coluna)

Não poderia resolver? por que no “typeof” tu só precisa informar o tipo né (que pode ser uma classe ou pode ser classe.método???)
Pelo que notei, se tu indica massBase.DadosTXT, ele está procurando o ArquivoTXT dentro desse método, e não vai achar nada… (pois ele está fora…)
(ps: Eu nunca usei o que está usando, estou só chutando usando um pouco de lógica…)
Faz algum sentido???

@ramses-saccol-de-almeida Fez sentido totalmente, e… funcionou!! \o/

A indicação de classe.método, no caso massBase.DadosTXT, estava mesmo por procurar o ArquivoTXT.

0_1505242517815_403ff9ec-24cd-4e13-bbda-c5b6a758e2c2-image.png

Muitíssimo obrigada pela ajuda de todos!!


Carol Ciola

Beleza…Me deve uma cerveja (artesanal)
aueuaehuauhaeuhuhuheuhaeuhae
Mas beleza…bons testes…

Log in to reply

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