Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Feature request] Добавить should с функц. параметром работы с элементом #103

Open
shaburov opened this issue May 23, 2021 · 0 comments

Comments

@shaburov
Copy link

Классно, когда есть возможность проверить атрибуты элемента при вызове дефолтного метода should
Примеры использования

@Test
@DisplayName("Кнопка 'Войти' не активна, если не заполнено поле 'Пароль'")
public void test1621775593550() {
    onSite().onLoginPage().getInputLogin().sendKeys(USER.getLogin());
    final LoginPage.ExampleAtlasWebElement<?> btn = onSite().onLoginPage().getButtonLogin();
    // пример 1
    btn.should("Доступность кнопки для нажатия", WebElement::isEnabled, is(false));
    // пример 2
    btn.should("Доступность кнопки для нажатия", e -> e.getAttribute("class"), containsString("disabled"));
}

Предлагаю расширить интерфейс AtlasWebElement добавив еще один метод should как в примере

interface ExampleAtlasWebElement<T extends WebElement> extends AtlasWebElement<T> {

    default <R> ExampleAtlasWebElement<T> should(String message, 
                                                 Function<T, R> function, 
                                                 Matcher<R> matcher) {
        final R actual = function.apply((T) this);
        assertThat(message, actual, matcher);
        return this;
    }
}

В readme этого проекта есть похожий пример с функциональным интерфейсом который у меня не завелся, так как org.hamcrest.Matcher не содержит методов is которые бы на вход принимали функциональные интерфейсы.
Да и в принципе пример в ридми не верный концептуально, так как Matchers.is принимает ожидаемый результат, а в примере передается актуальный WebElement::isDisplayed, что явно смахивает на баг документации.

onSearchPage().resultsPanel().user(userName)
        .should("User is not found", Matchers.is(WebElement::isDisplayed));

В org.hamcrest.Matcher (hamcrest-all 1.3) доступны только методы
image

image

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant