Skip to content

Commit

Permalink
Feature/screenshot step (#114)
Browse files Browse the repository at this point in the history
* added step @И("^снят скриншот текущей страницы$")
  • Loading branch information
dariaVasileva authored and GannaChernyshova committed Nov 22, 2018
1 parent 077038b commit 7d21fd8
Show file tree
Hide file tree
Showing 2 changed files with 102 additions and 94 deletions.
102 changes: 53 additions & 49 deletions src/main/java/ru/alfabank/steps/DefaultSteps.java
Original file line number Diff line number Diff line change
Expand Up @@ -18,15 +18,13 @@
import com.codeborne.selenide.Condition;
import com.codeborne.selenide.Selenide;
import com.codeborne.selenide.SelenideElement;
import com.codeborne.selenide.WebDriverRunner;
import cucumber.api.DataTable;
import cucumber.api.java.ru.*;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.RandomStringUtils;
import org.hamcrest.Matchers;
import org.openqa.selenium.By;
import org.openqa.selenium.*;
import org.openqa.selenium.Dimension;
import org.openqa.selenium.Keys;
import org.openqa.selenium.interactions.Actions;
import ru.alfabank.alfatest.cucumber.api.AkitaScenario;

Expand Down Expand Up @@ -190,10 +188,9 @@ public void elemDisappered(String elementName) {
@Тогда("^(?:страница|блок|форма|вкладка) \"([^\"]*)\" (?:загрузилась|загрузился)$")
public void loadPage(String nameOfPage) {
akitaScenario.setCurrentPage(akitaScenario.getPage(nameOfPage));
if(isIE()) {
if (isIE()) {
akitaScenario.getCurrentPage().ieAppeared();
}
else akitaScenario.getCurrentPage().appeared();
} else akitaScenario.getCurrentPage().appeared();
}

/**
Expand All @@ -203,10 +200,9 @@ public void loadPage(String nameOfPage) {
@Тогда("^(?:страница|блок|форма|вкладка) \"([^\"]*)\" не (?:загрузилась|загрузился)$")
public void loadPageFailed(String nameOfPage) {
akitaScenario.setCurrentPage(akitaScenario.getPage(nameOfPage));
if(isIE()){
if (isIE()) {
akitaScenario.getCurrentPage().ieDisappeared();
}
else akitaScenario.getCurrentPage().disappeared();
} else akitaScenario.getCurrentPage().disappeared();
}

/**
Expand Down Expand Up @@ -237,7 +233,7 @@ public void checkingTwoVariablesAreNotEquals(String firstVariableName, String se
String firstValueToCompare = akitaScenario.getVar(firstVariableName).toString();
String secondValueToCompare = akitaScenario.getVar(secondVariableName).toString();
assertThat(String.format("Значения в переменных [%s] и [%s] совпадают", firstVariableName, secondVariableName),
firstValueToCompare, Matchers.not(equalTo(secondValueToCompare)));
firstValueToCompare, Matchers.not(equalTo(secondValueToCompare)));
}

/**
Expand Down Expand Up @@ -290,10 +286,9 @@ public void waitForSeconds(long seconds) {
*/
@Тогда("^(?:страница|блок|форма) \"([^\"]*)\" (?:скрыт|скрыта)")
public void blockDisappeared(String nameOfPage) {
if (isIE()){
if (isIE()) {
akitaScenario.getPage(nameOfPage).ieDisappeared();
}
else akitaScenario.getPage(nameOfPage).disappeared();
} else akitaScenario.getPage(nameOfPage).disappeared();
}

/**
Expand All @@ -308,8 +303,8 @@ public void pushButtonOnKeyboard(String buttonName) {
/**
* Эмулирует нажатие сочетания клавиш на клавиатуре.
* Допустим, чтобы эмулировать нажатие на Ctrl+A, в таблице должны быть следующие значения
* | CONTROL |
* | a |
* | CONTROL |
* | a |
*
* @param keyNames название клавиши
*/
Expand Down Expand Up @@ -578,8 +573,8 @@ public void checkElemClassContainsExpectedValue(String elementName, String expec
public void checkElemClassNotContainsExpectedValue(String elementName, String expectedClassValue) {
SelenideElement currentElement = akitaScenario.getCurrentPage().getElement(elementName);
assertThat(String.format("Элемент [%s] содержит класс со значением [%s]", elementName, expectedClassValue),
currentElement.getAttribute("class").toLowerCase(),
Matchers.not(containsString(getPropertyOrStringVariableOrValue(expectedClassValue).toLowerCase())));
currentElement.getAttribute("class").toLowerCase(),
Matchers.not(containsString(getPropertyOrStringVariableOrValue(expectedClassValue).toLowerCase())));
}

/**
Expand Down Expand Up @@ -751,7 +746,7 @@ public void testFileDownloaded(String fileName) {
}

/**
* Скроллит экран до нужного элемента, имеющегося на странице, но видимого только в нижней/верхней части страницы.
* Скроллит экран до нужного элемента, имеющегося на странице, но видимого только в нижней/верхней части страницы.
*/
@Тогда("^страница прокручена до элемента \"([^\"]*)\"")
public void scrollPageToElement(String elementName) {
Expand Down Expand Up @@ -779,7 +774,7 @@ public void selectRandomElementFromListAndSaveVar(String listName, String varNam
element.shouldBe(Condition.visible).click();
akitaScenario.setVar(varName, akitaScenario.getCurrentPage().getAnyElementText(element).trim());
akitaScenario.write(String.format("Переменной [%s] присвоено значение [%s] из списка [%s]", varName,
akitaScenario.getVar(varName), listName));
akitaScenario.getVar(varName), listName));
}

/**
Expand Down Expand Up @@ -823,10 +818,10 @@ public void checkListElementsNotContainsText(String listName, String expectedVal
final String value = getPropertyOrValue(expectedValue);
List<SelenideElement> listOfElementsFromPage = akitaScenario.getCurrentPage().getElementsList(listName);
List<String> elementsListText = listOfElementsFromPage.stream()
.map(element -> element.getText().trim().toLowerCase())
.collect(toList());
.map(element -> element.getText().trim().toLowerCase())
.collect(toList());
assertFalse(String.format("Элемены списка %s: [%s] содержат текст [%s] ", listName, elementsListText, value),
elementsListText.stream().allMatch(item -> item.contains(value.toLowerCase())));
elementsListText.stream().allMatch(item -> item.contains(value.toLowerCase())));
}

/**
Expand Down Expand Up @@ -883,7 +878,7 @@ public void inputAndSetRandomNumSequence(String elementName, int seqLength, Stri
valueInput.setValue(numSeq);
akitaScenario.setVar(varName, numSeq);
akitaScenario.write(String.format("В поле [%s] введено значение [%s] и сохранено в переменную [%s]",
elementName, numSeq, varName));
elementName, numSeq, varName));
}

/**
Expand All @@ -894,7 +889,7 @@ public void checkListTextsByRegExp(String listName, String pattern) {
akitaScenario.getCurrentPage().getElementsList(listName).forEach(element -> {
String str = akitaScenario.getCurrentPage().getAnyElementText(element);
assertTrue(format("Текст '%s' из списка '%s' не соответствует формату регулярного выражения", str, listName),
isTextMatches(str, pattern));
isTextMatches(str, pattern));
});
}

Expand All @@ -909,7 +904,7 @@ public void executeJsScript(String scriptName) {
}

/**
* Производится проверка количества символов в поле со значением, указанным в шаге
* Производится проверка количества символов в поле со значением, указанным в шаге
*/
@Тогда("^в поле \"([^\"]*)\" содержится (\\d+) символов$")
public void checkFieldSymbolsCount(String element, int num) {
Expand All @@ -918,7 +913,7 @@ public void checkFieldSymbolsCount(String element, int num) {
}

/**
* Производится проверка соответствия числа элементов списка значению, указанному в шаге
* Производится проверка соответствия числа элементов списка значению, указанному в шаге
*/
@Тогда("^в списке \"([^\"]*)\" содержится (\\d+) (?:элемент|элементов|элемента)")
public void listContainsNumberOfElements(String listName, int quantity) {
Expand All @@ -927,7 +922,7 @@ public void listContainsNumberOfElements(String listName, int quantity) {
}

/**
* Производится проверка соответствия числа элементов списка значению из property файла, из переменной сценария или указанному в шаге
* Производится проверка соответствия числа элементов списка значению из property файла, из переменной сценария или указанному в шаге
*/
@Тогда("^в списке \"([^\"]*)\" содержится количество элементов, равное значению из переменной \"([^\"]*)\"")
public void listContainsNumberFromVariable(String listName, String quantity) {
Expand All @@ -936,38 +931,39 @@ public void listContainsNumberFromVariable(String listName, String quantity) {
}

/**
* Производится сопоставление числа элементов списка и значения, указанного в шаге
* Производится сопоставление числа элементов списка и значения, указанного в шаге
*/
@Тогда("^в списке \"([^\"]*)\" содержится (более|менее) (\\d+) (?:элементов|элемента)")
public void listContainsMoreOrLessElements(String listName, String moreOrLess, int quantity) {
List<SelenideElement> listOfElementsFromPage = akitaScenario.getCurrentPage().getElementsList(listName);
if ("более".equals(moreOrLess)) {
assertTrue(String.format("Число элементов списка меньше ожидаемого: %s", listOfElementsFromPage.size()), listOfElementsFromPage.size() > quantity);
} else assertTrue(String.format("Число элементов списка превышает ожидаемое: %s", listOfElementsFromPage.size()), listOfElementsFromPage.size() < quantity);
} else
assertTrue(String.format("Число элементов списка превышает ожидаемое: %s", listOfElementsFromPage.size()), listOfElementsFromPage.size() < quantity);

}

/**
* Скроллит страницу вниз до появления элемента каждую секунду.
* Если достигнут футер страницы и элемент не найден - выбрасывается exception.
* Скроллит страницу вниз до появления элемента каждую секунду.
* Если достигнут футер страницы и элемент не найден - выбрасывается exception.
*/
@И("^страница прокручена до появления элемента \"([^\"]*)\"$")
public void scrollWhileElemNotFoundOnPage(String elementName) {
SelenideElement el = null;
do {
el = akitaScenario.getCurrentPage().getElement(elementName);
if (el.exists()) {
break;
}
executeJavaScript("return window.scrollBy(0, 250);");
sleep(1000);
} while (!atBottom());
assertThat("Элемент " + elementName + " не найден", el.isDisplayed());
}
SelenideElement el = null;
do {
el = akitaScenario.getCurrentPage().getElement(elementName);
if (el.exists()) {
break;
}
executeJavaScript("return window.scrollBy(0, 250);");
sleep(1000);
} while (!atBottom());
assertThat("Элемент " + elementName + " не найден", el.isDisplayed());
}

/**
* Скроллит страницу вниз до появления элемента с текстом из property файла, из переменной сценария или указанному в шаге каждую секунду.
* Если достигнут футер страницы и элемент не найден - выбрасывается exception.
* Скроллит страницу вниз до появления элемента с текстом из property файла, из переменной сценария или указанному в шаге каждую секунду.
* Если достигнут футер страницы и элемент не найден - выбрасывается exception.
*/
@И("^страница прокручена до появления элемента с текстом \"([^\"]*)\"$")
public void scrollWhileElemWithTextNotFoundOnPage(String expectedValue) {
Expand All @@ -983,13 +979,22 @@ public void scrollWhileElemWithTextNotFoundOnPage(String expectedValue) {
assertThat("Элемент с текстом " + expectedValue + " не найден", el.isDisplayed());
}

/**
* Метод осуществляет снятие скриншота и прикрепление его к cucumber отчету.
*/
@И("^снят скриншот текущей страницы$")
public void takeScreenshot() {
final byte[] screenshot = ((TakesScreenshot) getWebDriver()).getScreenshotAs(OutputType.BYTES);
AkitaScenario.getInstance().getScenario().embed(screenshot, "image/png");
}

/*
* Проверка совпадения значения из переменной и значения из property
*/
@Тогда("^значения из переменной \"([^\"]*)\" и из property файла \"([^\"]*)\" совпадают$")
public void checkIfValueFromVariableEqualPropertyVariable(String envVarible, String propertyVariable) {
assertThat("Переменные " + envVarible + " и " + propertyVariable + " не совпадают",
(String) akitaScenario.getVar(envVarible), equalToIgnoringCase(loadProperty(propertyVariable)));
(String) akitaScenario.getVar(envVarible), equalToIgnoringCase(loadProperty(propertyVariable)));
}

/*
Expand All @@ -1016,8 +1021,7 @@ public void fillTemplate(String templateName, String varName, DataTable table) {
String replacement = list.get(1);
if (template.contains(regexp)) {
template = template.replaceAll(regexp, replacement);
}
else {
} else {
akitaScenario.write("В шаблоне не найден элемент " + regexp);
error = true;
}
Expand Down Expand Up @@ -1048,7 +1052,7 @@ private boolean checkResult(String result, String message) {
log.warn(message + " не найдена");
return false;
}
log.info(message + " = " + result);
log.info(message + " = " + result);
akitaScenario.write(message + " = " + result);
return true;
}
Expand Down Expand Up @@ -1122,7 +1126,7 @@ public boolean isTextMatches(String str, String pattern) {
/**
* Возвращает локатор для поиска по нормализованному(без учета регистра) тексту
*/
public String getTranslateNormalizeSpaceText (String expectedText) {
public String getTranslateNormalizeSpaceText(String expectedText) {
StringBuilder text = new StringBuilder();
text.append("//*[contains(translate(normalize-space(text()), ");
text.append("'ABCDEFGHIJKLMNOPQRSTUVWXYZАБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ', ");
Expand Down
Loading

0 comments on commit 7d21fd8

Please sign in to comment.