Я перехожу из Selenium в WebdriverIO и сталкиваюсь с некоторыми трудностями в отношении повторного использования функций.Позвольте мне продемонстрировать на примере:
<nav>
<div><a>Clients</a></div>
<div><a>Accounts</a></div>
<div><a>Packages</a></div>
</nav>
Допустим, у меня есть панель навигации с 3 ссылками выше.Когда я попадаю на эту страницу, я хочу проверить, существует ли каждая ссылка.Моя функция может выглядеть примерно так:
class LoginPage extends Page {
get clientsLink() { return $('//a[contains(., "Clients")]'); }
isTabDisplayed() {
if (this.clientsLink.isDisplayed()) {
return true;
} else {
false
}
}
}
это нормально, за исключением того, что мне нужно написать еще 2 геттера для Accounts
и Packages
, и поэтому мой класс будет выглядеть так:
class LoginPage extends Page {
get clientsLink() { return $('//a[contains(., "Clients")]'); }
get accountsLink() { return $('//a[contains(., "Accounts")]'); }
get packagesLink() { return $('//a[contains(., "Packages")]'); }
isClientTabDisplayed(tab) {
if (this.clientsLink.isDisplayed()) {
return true;
} else {
false
}
}
isAccountsTabDisplayed(tab) {
if (this.accountsLink.isDisplayed()) {
return true;
} else {
false
}
}
isPackagesTabDisplayed(tab) {
if (this.packagesLink.isDisplayed()) {
return true;
} else {
false
}
}
}
, в этот момент мое беспокойство вспыхивает, и я начинаю думать о том, как я могу повторно использовать функцию isTabDisplayed
, где я могу передать строку получателю с именем моей вкладки или что-то в этом роде.
К сожалению, геттеры не принимают параметры, и до сих пор я не нашел в Google никаких ресурсов, которые могли бы помочь мне решить эту проблему (чаще всего это объектная модель страницы, которая, похоже, не решает эту проблему)
Является ли мой мыслительный процесс нестандартным, что я стремлюсь к многоразовому коду при тестировании пользовательского интерфейса, или я не ищу в Google правильные шаблоны?