Как я могу создать методы условного ожидания в одной функции?

#java #selenium #selenium-webdriver #automated-tests

#java #селен #selenium-webdriver #автоматизированные тесты

Вопрос:

Это самый известный способ создания функции ожидания

 public BaseFunction(WebDriver driver) {
    this.driver = driver;
    wait = new WebDriverWait(this.driver, 30);
}

public WebElement waitUntil(By element) {
    return wait.until(ExpectedConditions.visibilityOfElementLocated(element);
}
 

но я хочу создать функцию, которая принимает ожидаемые условия в качестве параметра. Мне нужно выбрать, является ли visibilityOfElementLocated или invisibilityOfElementLocated . Я не хочу дублировать функции.

Ответ №1:

Вы можете переписать свой waitUntil метод, чтобы принимать условие в качестве параметра следующим образом:

 public WebElement waitUntil(Function<WebDriver, WebElement> condition) {
    return wait.until(condition);
}
 

Затем вы можете вызвать его как либо

 baseFunction.waitUntil(ExpectedConditions.visibilityOfElementLocated(element));
 

или

 baseFunction.waitUntil(ExpectedConditions.invisibilityOfElementLocated(element));