我开始在黄瓜,我做了埃利亚斯诺盖拉演习,并希望改善结果。等着黄瓜,不关闭浏览器
的URL练习: http://eliasnogueira.com/arquivos_blog/selenium/desafio/2desafio/
我想要做的改进:
1)我didn't知道一种方法来声明“WebDriverWait等待=新WebDriverWait(驱动程序,10);”只是一次。 首先我尝试了setUp方法之前,但我有问题“无法实例化类”,所以我决定把它放在使用它的方法,但我知道它不是那么好。
2)我想让浏览器在每次测试运行时都不关闭并重新打开。
这里是我的代码:
RunTests.java
package tests;
import org.junit.runner.RunWith;
import cucumber.api.CucumberOptions;
import cucumber.api.junit.Cucumber;
@RunWith(Cucumber.class)
@CucumberOptions(
features = "funcionalidades", //pasta..
glue = "tests", //pacote..
plugin = {
//gerar um relatorio do teste..
"html:target/cucumber-html-report",
"json:target/cucumber.json", "pretty:target/cucumber-pretty.txt",
"usage:target/cucumber-usage.json", "junit:target/cucumber-results.xml"
}
)
public class RunTests {
}
EdicaoInlineTestSteps.java
package tests;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.support.ui.ExpectedConditions;
import org.openqa.selenium.support.ui.WebDriverWait;
import cucumber.api.java.After;
import cucumber.api.java.Before;
import cucumber.api.java.en.Given;
import cucumber.api.java.en.Then;
import cucumber.api.java.en.When;
import static org.junit.Assert.*;
public class EdicaoInlineTestSteps {
WebDriver driver;
@Before
public void setUp() throws Exception{
System.setProperty("webdriver.chrome.driver", "C:\\caroltestes\\chromedriver.exe");
driver = new ChromeDriver();
}
@After
public void tearDown(){
driver.quit();
}
@Given("^Acessar a página de edição inline do site do Elias Nogueira$")
public void acessar_a_página_de_edição_inline_do_site_do_Elias_Nogueira() throws Throwable {
driver.get("http://eliasnogueira.com/arquivos_blog/selenium/desafio/2desafio/");
}
@Given("^Alterar o nome \"(.*?)\"$")
public void alterar_o_nome(String nome) throws Throwable {
driver.findElement(By.id("name_rg_display_section")).click();
driver.findElement(By.id("nome_pessoa")).clear();
driver.findElement(By.id("nome_pessoa")).sendKeys(nome);
}
@When("^Completar a ação através do Salvar nome$")
public void completar_a_ação_através_do_Salvar_nome() throws Throwable {
driver.findElement(By.cssSelector("#name_hv_editing_section > input[value='Salvar']")).click();
}
@Then("^Verificar que a troca do nome foi feita com sucesso$")
public void verificar_que_a_troca_do_nome_foi_feita_com_sucesso() throws Throwable {
WebElement camponome = driver.findElement(By.id("name_rg_display_section"));
WebDriverWait wait = new WebDriverWait(driver, 10);
wait.until(ExpectedConditions.visibilityOf(camponome));
String resultado = driver.findElement(By.id("name_rg_display_section")).getText();
assertEquals(resultado, "Carol Cruz");
}
@Given("^Alterar o email \"(.*?)\"$")
public void alterar_o_email(String email) throws Throwable {
driver.findElement(By.id("email_rg_display_section")).click();
driver.findElement(By.id("email_value")).clear();
driver.findElement(By.id("email_value")).sendKeys(email);
}
@When("^Completar a ação através do Salvar email$")
public void completar_a_ação_através_do_Salvar_email() throws Throwable {
driver.findElement(By.cssSelector("#email_hv_editing_section > input[type=\"button\"]:nth-child(4)")).click();
}
@Then("^Verificar que a troca do email foi feita com sucesso$")
public void verificar_que_a_troca_do_email_foi_feita_com_sucesso() throws Throwable {
WebElement campoemail = driver.findElement(By.id("email_rg_display_section"));
WebDriverWait wait = new WebDriverWait(driver, 10);
wait.until(ExpectedConditions.visibilityOf(campoemail));
String mensagem2 = driver.findElement(By.id("email_rg_display_section")).getText();
assertEquals (mensagem2 , "Email: [email protected]");
}
@Given("^Alterar o telefone \"(.*?)\"$")
public void alterar_o_telefone(String telefone) throws Throwable {
driver.findElement(By.id("phone_rg_display_section")).click();
driver.findElement(By.id("phone_value")).clear();
driver.findElement(By.id("phone_value")).sendKeys(telefone);
}
@When("^Completar a ação através do Salvar telefone$")
public void completar_a_ação_através_do_Salvar_telefone() throws Throwable {
driver.findElement(By.cssSelector("#phone_hv_editing_section > input[type=\"button\"]:nth-child(4)")).click();
}
@Then("^Verificar que a troca do telefone foi feita com sucesso$")
public void verificar_que_a_troca_do_telefone_foi_feita_com_sucesso() throws Throwable {
WebElement campotelefone = driver.findElement(By.id("phone_rg_display_section"));
WebDriverWait wait = new WebDriverWait(driver, 10);
wait.until(ExpectedConditions.visibilityOf(campotelefone));
String mensagem3 = driver.findElement(By.id("phone_rg_display_section")).getText();
assertEquals (mensagem3 , "Telefone: 21 21222121");
}
}
EdicaoInline.feature
#encoding: iso-8859-1
Feature: Edição Inline
Eu quero realizar a edição inline do site do Elias Nogueira
Scenario: Realizando a alteração do nome
Given Acessar a página de edição inline do site do Elias Nogueira
And Alterar o nome "Carol Cruz"
When Completar a ação através do Salvar nome
Then Verificar que a troca do nome foi feita com sucesso
Scenario: Realizando a alteração do email
Given Acessar a página de edição inline do site do Elias Nogueira
And Alterar o email "[email protected]"
When Completar a ação através do Salvar email
Then Verificar que a troca do email foi feita com sucesso
Scenario: Realizando a alteração do telefone
Given Acessar a página de edição inline do site do Elias Nogueira
And Alterar o telefone "21 21222121"
When Completar a ação através do Salvar telefone
Then Verificar que a troca do telefone foi feita com sucesso
我尝试切换到BeforeClass和AfterClass,但我有一个错误:java.lang.NullPointerException –
黄瓜没有BeforeClass和AfterClass。 我想我不能和黄瓜一起使用。 我对不对? –