如何使用WebDriver调用预定义的Geb页面元素?

问题描述 投票:0回答:1

我创建了一个可重用的WebDriver方法,但我终生无法弄清楚如何使用WebDriver调用预定义的Geb页面CSS选择器。

此方法有效,但是我似乎无法使用WebElement元素来调用它:

static void WaitVisibilityOfElement(WebDriver driver, By cssSelector, int timeoutInSeconds) {
    WebDriverWait Wait = new WebDriverWait(driver, timeoutInSeconds)
    Wait.until(ExpectedConditions.visibilityOfElementLocated(cssSelector)).click()
}

这是我要调用的元素,我只想使用元素flipperCardOne的名称,但是如果我这样做,它将无法使用。

flipperCardOne(wait:true) {$ (".flex-item:nth-child(5) .front > .w-100")}
selenium-webdriver groovy geb
1个回答
0
投票

Geb的选择器结果(从对$()的调用返回的结果)称为Navigator,并且是Selenium WebElement的集合的包装。因为可以从多个CSS选择器中创建导航器(您可以在它们上面链接多个find()调用,所以可以基于xpath表达式作为它们的基础,并且可以通过匹配它们的文本来过滤它们的内容,仅举几个例子)您无法从Navigator到CSS选择器一对一地映射。如果您打算在与flipperCardOne进行交互之前始终等待其可见,那么惯用的方式是使用waitCondition content option

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()
}
© www.soinside.com 2019 - 2024. All rights reserved.