Código executa apenas um método do script

10 respostas
R

Olá,

No código abaixo estou usando Selenium Webdriver + Junit.

package CriticalTests;

import java.util.concurrent.TimeUnit;
import org.junit.*;
import org.openqa.selenium.*;
import org.openqa.selenium.firefox.FirefoxDriver;

public class PurchaseInStore3 {
	private WebDriver driver;
	private String baseUrl;
	private String baseUrlAdmin;

	@Before
	public void setUp() throws Exception {
		driver = new FirefoxDriver();
		baseUrl = "meusite.com";
		baseUrlAdmin = "meusite.com";
		driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);

	}

	@Test
	public void DeliveryInformation() throws Exception {
		driver.get(baseUrl);
		driver.manage().window().maximize();
		driver.findElement(By.partialLinkText("Sweet Liberty")).click();
		assertTrue(driver.findElement(By.className("product-middle")));
		driver.findElement(By.id("deliveryDate")).click();
		driver.switchTo().frame(driver.findElement(By.xpath("/html/body/div[7]/div/div/div/iframe")));
		driver.findElement(By.xpath("//*[@data-event='false']")).click();
		driver.findElement(By.id("ctl00_ctl00_cph1_cph1_ctl00_ctrlProductInfo_ctrlFlowersDelivery_txtTributeName")).sendKeys("Mark");
		driver.findElement(By.xpath("//*[@title='Mark Hudson']")).click();
		driver.findElement(By.id("btnAddToCart")).click();
		
	}
		
	public void AddGiftMessage() throws Exception {
		driver.findElement(By.id("GiftMessageText")).sendKeys("Testando compra no paypal");
		driver.findElement(By.className("inner-button")).click();
		
	}
	
	public void PaymentMethodPaypal() throws Exception{
		driver.findElement(By.xpath("//form[@id='BillingForm']/div/div/ul/li[2]/label")).click();
		driver.findElement(By.id("BillingAddress1")).sendKeys("Rua Irineu");
		driver.findElement(By.id("BillingAddress2")).sendKeys("Suite");
		driver.findElement(By.id("BillingZipPostalCode")).sendKeys("48079");
		driver.findElement(By.id("BillingTelephone")).sendKeys("3475849");
		driver.findElement(By.linkText("Continue to Paypal")).click();
		driver.findElement(By.id("login_email")).sendKeys("[email removido]");
		driver.findElement(By.id("login_password")).sendKeys("asdasd");
		driver.findElement(By.id("submitLogin")).click();
		driver.findElement(By.id("continue")).click();
		assertTrue(driver.findElement(By.className("st-current-tribute")));
		driver.findElement(By.xpath("/html/body/div/div/div[2]/div/div/div/div[3]/div[2]/div/div[4]/div[2]/div[2]/span")).click();
		assertTrue(driver.findElement(By.className("registration")));
		driver.findElement(By.cssSelector("body")).sendKeys(Keys.CONTROL + "t");
		driver.get(baseUrlAdmin);
		driver.findElement(By.id("LoginForm_UserName")).sendKeys("[email removido]");
		driver.findElement(By.id("LoginForm_Password")).sendKeys("123456");
		driver.findElement(By.id("LoginForm_LoginButton")).click();
		driver.findElement(By.xpath("//*[@title='View order details']")).click();
		driver.findElement(By.id("ctl00_cph1_ctrlOrderDetails_OrderTabs_pnlOrderInfo_CancelOrderButton")).click();
		driver.findElement(By.id("ctl00_cph1_ctrlOrderDetails_OrderTabs_pnlOrderInfo_CancelOrderConfirm_srblCancellationReason_rblValue_7")).click();
		driver.findElement(By.id("ctl00_cph1_ctrlOrderDetails_OrderTabs_pnlOrderInfo_CancelOrderConfirm_btnOKRequired")).click();
		assertTrue(driver.findElement(By.id("ctl00_cph1_ctrlOrderDetails_OrderTabs_pnlOrderInfo_ReopenOrderButton")));
		driver.switchTo().defaultContent();

	}

	private void assertTrue(WebElement findElement) {
		
	}

	@After
	public void tearDown() throws Exception {
		driver.quit();
	}
}

Pois bem, logo quando executo este código, ele executa apenas o primeiro método:

@Test
	public void DeliveryInformation() throws Exception {
		driver.get(baseUrl);
		driver.manage().window().maximize();
		driver.findElement(By.partialLinkText("Sweet Liberty")).click();
		assertTrue(driver.findElement(By.className("product-middle")));
		driver.findElement(By.id("deliveryDate")).click();
		driver.switchTo().frame(driver.findElement(By.xpath("/html/body/div[7]/div/div/div/iframe")));
		driver.findElement(By.xpath("//*[@data-event='false']")).click();
		driver.findElement(By.id("ctl00_ctl00_cph1_cph1_ctl00_ctrlProductInfo_ctrlFlowersDelivery_txtTributeName")).sendKeys("Mark");
		driver.findElement(By.xpath("//*[@title='Mark Hudson']")).click();
		driver.findElement(By.id("btnAddToCart")).click();
		
	}

Quero que ele execute todo programa, estou achando que é alguma coisa nos colchetes, mas não me achei ainda. O que acham?

10 Respostas

R

alguém?

Ataxexe

Não!

Se ninguém respondeu, você pode melhorar sua pergunta, incluir mais coisas que já fez para tentar solucionar o problema ou mais informações. Não fique upando tópicos, melhore seus questionamentos.

R

Amigo, acredito que esteja bem explicado.

Pois quando executo o script todo no JUnit, ele executa apenas o primeiro método, mas quero que ele execute todos os métodos. :wink:

igor_ks

Anote com @Test todos os métodos que vc queira testar

Ataxexe

rafael.cs:
Amigo, acredito que esteja bem explicado.

Pois quando executo o script todo no JUnit, ele executa apenas o primeiro método, mas quero que ele execute todos os métodos. ;)

Então espere mais um pouco. Upar tópicos é contra as regras do fórum.

Aproveite e veja se não é o que o igor postou.

R

Igor, você me ajudou. Obrigado.

Aproveitando, perceba que a ordem que ele executa os métodos:

Tem como fazer com que ele execute os métodos na sequência do script?

Abraços

Ataxexe

rafael.cs:
Igor, você me ajudou. Obrigado.

Aproveitando, perceba que a ordem que ele executa os métodos:

Tem como fazer com que ele execute os métodos na sequência do script?

Abraços

Não, não tem como! Um teste não deve depender da execução de outro. O que você pode fazer é usar o @Before e @After para adicionar o comportamento (não um teste) antes e depois de cada teste.

R

Pois e, mas acredito que o @before e @after nao ordena a execucao de todos os metodos, como eu gostaria.

Ataxexe

Mas ele não ordena, apenas executa algo antes e depois dos testes. Se os seus métodos de teste dependem uns dos outros, então seu código de testes está com algum problema.

R

Olá,

Não que ele dependa um do outro, mas se você perceber, cada método faz uma ação. Assim, evita de ficar apenas um método gigantesco entende?

Atenciosamente,
Rafael

Criado 12 de setembro de 2013
Ultima resposta 17 de set. de 2013
Respostas 10
Participantes 3