Skip to content

Commit

Permalink
add new scroll steps (#59)
Browse files Browse the repository at this point in the history
* added scroll page down steps #62
@И("^страница прокручена до появления элемента \"([^\"]*)\"$")
@И("^страница прокручена до появления элемента с текстом \"([^\"]*)\"$")
* renamed and deprecated @Тогда("^экран проскроллен до элемента \"([^\"]*)\"") 
new stepdef is @Тогда("^страница прокручена до элемента \"([^\"]*)\"")
  • Loading branch information
snfrolov authored and GannaChernyshova committed Jun 4, 2018
1 parent 062c426 commit 73f5459
Show file tree
Hide file tree
Showing 4 changed files with 97 additions and 2 deletions.
2 changes: 1 addition & 1 deletion build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ buildscript {

classpath 'com.netflix.nebula:nebula-release-plugin:4.1.0'
classpath 'com.netflix.nebula:gradle-info-plugin:3.2.1'
classpath 'com.netflix.nebula:gradle-extra-configurations-plugin:2.2.+'
classpath 'com.netflix.nebula:gradle-extra-configurations-plugin:3.3.0'
classpath 'com.netflix.nebula:nebula-publishing-plugin:4.9.1'
}
}
Expand Down
60 changes: 60 additions & 0 deletions src/main/java/ru/alfabank/steps/DefaultSteps.java
Original file line number Diff line number Diff line change
Expand Up @@ -770,11 +770,20 @@ public void testFileDownloaded(String fileName) {
/**
* Скроллит экран до появления элемента. Полезно, если сайт длинный и элемент может быть не виден.
*/
@Deprecated
@Тогда("^экран проскроллен до элемента \"([^\"]*)\"")
public void scrollToElement(String elementName) {
akitaScenario.getCurrentPage().getElement(elementName).scrollTo();
}

/**
* Скроллит экран до нужного элемента, имеющегося на странице, но видимого только в нижней/верхней части страницы.
*/
@Тогда("^страница прокручена до элемента \"([^\"]*)\"")
public void scrollPageToElement(String elementName) {
akitaScenario.getCurrentPage().getElement(elementName).scrollTo();
}

/**
* Выбор из списка со страницы любого случайного элемента
*/
Expand Down Expand Up @@ -949,6 +958,42 @@ public void listContainsMoreOrLessElements(String listName, String moreOrLess, i
}

/**
* Скроллит страницу вниз до появления элемента каждую секунду.
* Если достигнут футер страницы и элемент не найден - выбрасывается 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());
}

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

/*
* Проверка совпадения значения из переменной и значения и property
*/
@Тогда("^значения из переменной \"([^\"]*)\" и из property файла \"([^\"]*)\" совпадают$")
Expand Down Expand Up @@ -1048,4 +1093,19 @@ public boolean isTextMatches(String str, String pattern) {
Matcher m = r.matcher(str);
return m.matches();
}

/**
* Возвращает нормализованный(без учета регистра) текст
*/
private String getTranslateNormalizeSpaceText (String expectedText) {
StringBuilder text = new StringBuilder();
text.append("//*[contains(translate(normalize-space(text()), ");
text.append("'АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ', 'абвгдеёжзийклмнопрстуфхчшщъыьэюя'), '");
text.append(expectedText);
text.append("') or contains(translate(normalize-space(text()), ");
text.append("'ABCDEFGHIJKLMNOPQRSTUVWXYZ', 'abcdefghijklmnopqrstuvwxyz'), '");
text.append(expectedText);
text.append("')]");
return text.toString();
}
}
5 changes: 5 additions & 0 deletions src/test/java/ru/alfabank/AkitaPageMock.java
Original file line number Diff line number Diff line change
Expand Up @@ -123,6 +123,11 @@ public class AkitaPageMock extends AkitaPage {
@Name("SearchBlock")
public SearchFieldMock searchField;

@Optional
@FindBy(xpath = "//span[text()='Показать ещё']")
@Name("Кнопка Показать ещё")
public SelenideElement buttonShowMore;

@FindBy(xpath = "//*[text()='Подписать и отправить']/parent::button")
@Name("Кнопка Подписать и отправить")
public SelenideElement signAndSendToBankButton;
Expand Down
32 changes: 31 additions & 1 deletion src/test/java/ru/alfabank/steps/DefaultStepsTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -798,6 +798,26 @@ public void testListContainsMoreOrLessElementsMoreNegative(){
ds.listContainsMoreOrLessElements("List", "более", 3);
}

@Test
public void testScrollWhileElemNotFoundOnPagePositive() {
ds.scrollWhileElemNotFoundOnPage("mockTagName");
}

@Test(expected = AssertionError.class)
public void testScrollWhileElemNotFoundOnPageNegative() {
ds.scrollWhileElemNotFoundOnPage("Кнопка Показать ещё");
}

@Test
public void testScrollWhileElemWithTextNotFoundOnPagePositive() {
ds.scrollWhileElemWithTextNotFoundOnPage("Serious testing page");
}

@Test(expected = AssertionError.class)
public void testScrollWhileElemWithTextNotFoundOnPageNegative() {
ds.scrollWhileElemWithTextNotFoundOnPage("Not serious testing page");
}

@Test
public void testCheckIfValueFromVariableEqualPropertyVariablePositive(){
akitaScenario.setVar("timeout","60000");
Expand Down Expand Up @@ -825,8 +845,18 @@ public void testCheckElemClassNotContainsExpectedValuePositive() {
ds.checkElemClassNotContainsExpectedValue("Кнопка Подписать и отправить", "enabled");
}

@Test(expected = AssertionError.class)
@Test(expected = AssertionError.class)
public void testCheckElemClassNotContainsExpectedValueNegative() {
ds.checkElemClassNotContainsExpectedValue("Кнопка Подписать и отправить", "disabled");
}

@Test
public void testScrollPageToElementPositive() {
ds.scrollPageToElement("mockTagName");
}

@Test(expected = AssertionError.class)
public void testScrollPageToElementNegative() {
ds.scrollPageToElement("Кнопка Показать ещё");
}
}

0 comments on commit 73f5459

Please sign in to comment.