Skip to content

Commit

Permalink
Merge pull request #270 from rogernobre/issue269
Browse files Browse the repository at this point in the history
Alteração para limpar o valor atual do campo em uma nova tentativa de preenchimento
  • Loading branch information
juliancesar committed Oct 30, 2014
2 parents 3183f08 + b4931f8 commit d49feca
Show file tree
Hide file tree
Showing 4 changed files with 57 additions and 18 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -210,13 +210,25 @@ public void inform(String value, String fieldName) {
Element element = (Element) runner.getElement(currentPageName, fieldName);
if (element instanceof TextField) {
TextField textField = (TextField) element;
textField.sendKeys(value);
textField.sendKeysWithTries(value);
} else if (element instanceof Select) {
((Select) element).selectByVisibleText(value);
} else {
throw new BehaveException(message.getString("exception-element-not-found"));
}
}

@When("limpo o valor do campo \"$fieldName\"")
@Alias("n\u00E3o informo valor para o campo \"$fieldName\"")
public void notInform(String fieldName) {
Element element = (Element) runner.getElement(currentPageName, fieldName);
if (element instanceof TextField) {
TextField textField = (TextField) element;
textField.clear();
} else {
throw new BehaveException(message.getString("exception-element-not-found"));
}
}

@When("informo: $table")
@Given("informo: $table")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -55,36 +55,30 @@ public class WebTextField extends WebBase implements TextField {

public void sendKeys(CharSequence... keysToSend) {
waitElement(0);
sendKeysWithTries(keysToSend);

String value = charSequenceToString(keysToSend);

//Envia uma sequencia de char
getElements().get(0).sendKeys(value);
}

/**
* Função que tenta preencher mais de uma vez o campo. Ela verifica se o
* conteúdo enviado é o mesmo que esta atualmente no campo.
*/
public void sendKeysWithTries(CharSequence... keysToSend) {

String value = "";
for (int i = 0; i < keysToSend.length; i++)
value += keysToSend[i];
waitElement(0);

String value = charSequenceToString(keysToSend);

int totalMilliseconds = 0;

List<WebElement> elements = getElements();

while (!elements.get(0).getAttribute("value").equals(value)) {

// Bug no Chrome: Ele não aceita Key.CANCEL, por isoso foi modificado para Keys.ESCAPE
Capabilities caps = ((RemoteWebDriver) getDriver()).getCapabilities();
String finalValue = Keys.chord(Keys.CONTROL, "a") + value + Keys.chord(Keys.CANCEL);

// Se for Chrome o último caracter deve ser ESCAPE e não CANCEL
if (caps.getBrowserName().equals("chrome")) {
finalValue = Keys.chord(Keys.CONTROL, "a") + value + Keys.chord(Keys.ESCAPE);
}

// Envia para o elemento
elements.get(0).sendKeys(finalValue);
elements.get(0).sendKeys(getValueToSend(value));

// Verifica se o elemento já esta com o valor correto
if (elements.get(0).getAttribute("value").equals(value))
Expand All @@ -104,6 +98,28 @@ public void sendKeysWithTries(CharSequence... keysToSend) {
}
}
}

private String charSequenceToString(CharSequence... keysToSend) {
String value = "";

for (int i = 0; i < keysToSend.length; i++)
value += keysToSend[i];

return value;
}

private String getValueToSend(String value) {
// Bug no Chrome: Ele não aceita Key.CANCEL, por isoso foi modificado para Keys.ESCAPE
Capabilities caps = ((RemoteWebDriver) getDriver()).getCapabilities();
String finalValue = Keys.chord(Keys.CONTROL, "a") + value + Keys.chord(Keys.CANCEL);

// Se for Chrome o último caracter deve ser ESCAPE e não CANCEL
if (caps.getBrowserName().equals("chrome")) {
finalValue = Keys.chord(Keys.CONTROL, "a") + value + Keys.chord(Keys.ESCAPE);
}

return finalValue;
}

/**
* O método de limpar o campo do WebDriver não funciona corretamente com
Expand All @@ -125,8 +141,9 @@ public void sendKeysWithTries(CharSequence... keysToSend) {
*/
public void clear() {
waitElement(0);

// Limpa o campo enviando BACKSPACE
sendKeysWithTries();
getElements().get(0).sendKeys(getValueToSend(Keys.chord(Keys.BACK_SPACE)));
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,4 +9,8 @@ Cenário: Utilização da funcionalidade de pesquisa

Acesso ao "Google"
Quando informo "Framework Demoiselle" no campo "Campo de Busca"
Então será exibido "frameworkdemoiselle.gov.br"
Então será exibido "frameworkdemoiselle.gov.br"
Quando limpo o valor do campo "Campo de Busca"
Então será exibido ""
Quando informo "Framework Demoiselle" no campo "Campo de Busca"
Então será exibido "frameworkdemoiselle.gov.br"
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,12 @@ Dado que vou para a tela "Tela de Login"
Quando informo "{usuário}" no campo "Campo Usuário"
E informo "{senha}" no campo "Campo Senha"
Então será exibido na "Campo Senha" o valor "{senha}"
Quando não informo valor para o campo "Campo Usuário"
E não informo valor para o campo "Campo Senha"
Então será exibido na "Campo Senha" o valor ""
Quando informo "{usuário}" no campo "Campo Usuário"
E informo "{senha}" no campo "Campo Senha"
Então será exibido na "Campo Senha" o valor "{senha}"
Quando clico em "Entrar"
Então será exibido "Obras"

Expand Down

0 comments on commit d49feca

Please sign in to comment.