Ele está dando erro na linha do Assert. bool achouPedidoValor = driver.PageSource.Contains("100,00");
Assert.IsTrue(achouPedidoValor);
ERRO: Referencia de objeto não definida para uma instancia de objeto. O que pode ser?
Ele está dando erro na linha do Assert. bool achouPedidoValor = driver.PageSource.Contains("100,00");
Assert.IsTrue(achouPedidoValor);
ERRO: Referencia de objeto não definida para uma instancia de objeto. O que pode ser?
Olá Cristiano,
esquisito, pois o erro geralmente ocorre quando você tenta invocar um método a partir de uma variável sem referência para o objeto. Mas não faria muito sentido dar este erro na linha do assert dado que ali você usa uma variável de tipo primitivo. Pode me mandar o código completo dessa classe de teste para eu dar uma olhada?
Posso sim.
using OpenQA.Selenium;
using OpenQA.Selenium.Chrome;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Threading;
using NUnit.Framework;
namespace TesteAutomatizado.testes
{
[TestFixture]
class tagplus
{
[Test]
public void testeinfinito()
{
//Realizando o login
IWebDriver driver = new ChromeDriver();
driver.Navigate().GoToUrl("http://app.tagplus.com.br/zerado/");
driver.Manage().Window.Maximize();
driver.Manage().Timeouts().ImplicitWait = TimeSpan.FromSeconds(30);
IWebElement usuario = driver.FindElement(By.Name("usuario"));
IWebElement senha = driver.FindElement(By.Name("senha"));
IWebElement button = driver.FindElement(By.ClassName("button"));
usuario.SendKeys("admin");
senha.SendKeys("123456");
button.Click();
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//Realizando teste do Pedido/Orçamento
driver.FindElement(By.ClassName("close")).Click();
driver.FindElement(By.ClassName("alert_counter")).Click();
driver.FindElement(By.Id("menu_modal_trigger")).Click();
driver.FindElement(By.XPath("//*[@id='filtro']/input")).SendKeys("Pedidos/Orçamentos");
driver.FindElement(By.LinkText("Pedidos/Orçamentos")).Click();
driver.SwitchTo().Frame("mainPanel_iframe");
driver.FindElement(By.Name("add")).Click();
driver.SwitchTo().DefaultContent();
driver.SwitchTo().Frame("http://app.tagplus.com.br/zerado/venda/pedidos_venda/form_iframe");
//Processo para cadastrar Produto
driver.FindElement(By.XPath("//*[@id='produtos_item_lancamento_pv']/tbody/tr/td[1]/p/span/i")).Click();
driver.FindElement(By.XPath("//*[@id='ui-active-menuitem']")).Click();
driver.SwitchTo().DefaultContent();
driver.SwitchTo().Frame("http://app.tagplus.com.br/zerado/ancoras/autosuggest_produtos_iframe");
driver.FindElement(By.Name("produto_title")).Click();
driver.FindElement(By.Id("produto__descricao_produto")).SendKeys("Produto Pedido/Orçamento");
driver.FindElement(By.Id("ean")).Click();
driver.FindElement(By.Id("produto_nota_fiscal")).Click();
driver.FindElement(By.XPath("//*[@id='fieldset_tributacao']/p[1]/span[3]/i")).Click();
driver.FindElement(By.XPath("//*[@id='ui-active-menuitem']")).Click();
driver.FindElement(By.Id("valor_venda_varejo_aux")).Clear();
driver.FindElement(By.Id("valor_venda_varejo_aux")).SendKeys("100,00");
driver.FindElement(By.Id("produto_estoque__qtd")).SendKeys("999,00");
driver.FindElement(By.ClassName("save_close")).Click();
driver.SwitchTo().DefaultContent();
driver.SwitchTo().Frame("http://app.tagplus.com.br/zerado/venda/pedidos_venda/form_iframe");
//Inserção do produto
driver.FindElement(By.XPath("/html/body/div[2]/div/form/div[2]/div[2]/div[2]/fieldset/table[1]/tbody/tr/td[1]/p/span/input[2]")).SendKeys("Produto");
driver.FindElement(By.XPath("/html/body/div[2]/div/form/div[2]/div[2]/div[2]/fieldset/table[1]/tbody/tr/td[1]/p/ul/li[1]/a/span[2]")).Click();
driver.FindElement(By.Id("addFormLancamento")).Click();
driver.FindElement(By.XPath("/html/body/div[2]/div/form/div[2]/div[2]/fieldset[3]/p[1]/span[2]/i")).Click();
driver.FindElement(By.XPath("/html/body/div[2]/div/form/div[2]/div[2]/fieldset[3]/p[1]/ul/li[1]")).Click();
driver.FindElement(By.XPath("//*[@id='dados_parcelas_tab']")).Click();
driver.FindElement(By.XPath("/html/body/div[2]/div/form/div[2]/div[3]/fieldset/div/table/tbody/tr/td[2]/p/span/input[2]")).SendKeys("DINHEIRO");
driver.FindElement(By.XPath("/html/body/div[2]/div/form/div[2]/div[3]/fieldset/div/table/tbody/tr/td[2]/p/ul/li[1]")).Click();
driver.SwitchTo().DefaultContent();
driver.SwitchTo().Frame("http://app.tagplus.com.br/zerado/venda/pedidos_venda/form_parcela_iframe");
driver.FindElement(By.ClassName("save_close")).Click();
driver.SwitchTo().DefaultContent();
driver.SwitchTo().Frame("http://app.tagplus.com.br/zerado/venda/pedidos_venda/form_iframe");
driver.FindElement(By.ClassName("save_close")).Click();
bool achouPedidoCliente = driver.PageSource.Contains("Cliente Pedido/Orçamento");
Assert.IsTrue(achouPedidoCliente);
//Criando segundo produto para processo de mesclagem
driver.SwitchTo().DefaultContent();
driver.SwitchTo().Frame("mainPanel_iframe");
Thread.Sleep(3000);
driver.FindElement(By.Name("add")).Click();
driver.SwitchTo().DefaultContent();
driver.SwitchTo().Frame("http://app.tagplus.com.br/zerado/venda/pedidos_venda/form_iframe");
}
}
}
O código está um pouco diferente da dúvida. No caso ele acusa erro nestas linha?
bool achouPedidoCliente = driver.PageSource.Contains("Cliente Pedido/Orçamento");
Assert.IsTrue(achouPedidoCliente);
Tente rodar em debug este teste e vá passando linha a linha. Uma coisa que pode estar acontecendo é que estas 2 linhas são executadas depois que você clica num link ou botão:
driver.FindElement(By.ClassName("save_close")).Click();
então pode ser que ele tenha executado o Contains antes de carregar a página. Executando com debug você conseguirá ver bem com calma o que vai acontecendo e se executando o Contains depois que a página terminar de carregar se ele passa pelo Assert.
Você fala no modo depuração do visual studio?
Esse mesmo
Mas na teoria se for isso que vc falou é só dar um Thread.Sleep, não?
Essa é a solução, a depuração seria mais para confirmar que é realmente este o problema.
É só ir colocando os break points em cada linha, né?
Estou colocando os break points, mas ele não respeita...
Puts verdade, como está rodando pelo NUnit GUI é um pouco mais chato de rodar ele em debug. Até tem este link que mostra como, mas será mais fácil você colocar o Thread.Sleep mesmo e ver se o teste funciona. Só fique atento em qual tela exatamente ele deu o erro e quando ele ocorreu para ver se é realmente o problema de ele talvez fazer o Contains antes da tela terminar de carregar.
Acho que não é isso viu, Lucas. Adicionei o Thread e nada.
Pode ser que o Thread.Sleep não esteja dando tempo suficiente. No caso do Selenium, nestes casos em que precisamos esperar uma página carregar é mais recomendado usar o WebDriverWait apresentado na aula 6. E ele será mais legal pois se realmente a página não carregar no tempo esperado pelo wait, ele te apresentará um erro mais bonito falando que estourou o tempo necessário para carregar a página.