Результаты селектора Geb (вещи, возвращаемые при вызовах $()
) называются Navigator
s и являются оболочкой для коллекций WebElement
s Selenium. Поскольку навигаторы могут создаваться не только из селекторов CSS (вы можете связать с ними несколько вызовов find()
, вы можете основывать их на выражениях xpath и фильтровать их содержимое, сопоставляя их текст, только для примера)Вы не можете отобразить один на один из Navigator
в селектор CSS. Если вы намерены всегда ждать, пока flipperCardOne
станет видимым, прежде чем взаимодействовать с ним, тогда идиоматическим способом сделать это будет использование waitCondition
опции содержимого :
flipperCardOne(wait:true, waitCondition: { it.displayed }) {$ (".flex-item:nth-child(5) .front > .w-100")}
Тогда вы могли бы просто сделать flipperCardOne.click()
, и это сработало бы.
И если вы настаиваете на использовании метода, аналогичного тому, который вы перечислили в вопросе (и я бы сказал, что это не правильно)тогда вам нужно что-то вроде:
static void WaitVisibilityOfElement(WebDriver driver, WebElement webElement, int timeoutInSeconds) {
WebDriverWait Wait = new WebDriverWait(driver, timeoutInSeconds)
Wait.until(ExpectedConditions.visibilityOf(webElement)).click()
}
, а затем назвать это как:
WaitVisibilityOfElement(browser.driver, flipperCardOne.singleElement, 5)