gpt4 book ai didi

xpath - 在 Geb 中动态设置内容

转载 作者:行者123 更新时间:2023-12-02 05:38:35 28 4
gpt4 key购买 nike

我想在 groovy 类中定义一个方法,我可以动态地将 xpath 传递给该方法(以便根据应用程序可以重用相同的方法)。下面的代码片段只是一个概念证明,但我最终希望构建一个可重用命令/组件的库,这就是为什么我想学习如何动态定义页面内容。

如果我尝试这个:

import geb.Page;


class oneStepDefMethodClass extends Page {
static url = 'http://www.google.com'
static content = {
queryInput { $("input", id: "gbqfq") }
queryButton { $("button",name: "btnG") }
//songLink { $("span._BZ")}
}
....
void assertSongInResults2(String xpathOfSongLink){
println "Waiting on video link "+ xpathOfSongLink

songLink { $(xpathOfSongLink)}

waitFor {
songLink.displayed
}
}

}

我收到此错误:groovy.lang.MissingMethodException:没有方法签名:geb.navigator.NonEmptyNavigator.songLink() 适用于参数类型:(oneStepDefMethodClass$_assertSongInResults2_closure3) 值:[oneStepDefMethodClass$_assertSongInResults2_closure3@7c455e96]

如果我抛出一个

content={songLink {$(xpathOfSongLink)}
}

在assertSongInResults2方法中阻止,我收到此错误:geb.error.UnresolvablePropertyException:无法将 SongLink 解析为 oneStepDefMethodClass 的内容,或其导航器上下文上的属性。 SongLink 是您忘记导入的类吗?

那么,有没有一种方法可以像这样动态定义页面内容呢?如果我将其与其余内容一起静态定义,则程序执行得很好,但这不是重点,我想创建可重用的资源,而不是每次想使用 geb 时都重新定义轮子。

最佳答案

在我写问题时解决了,但我想我会发布以防其他人有类似的问题

static String someXpath

static content = {
queryInput { $("input", id: "gbqfq") } //
queryButton { $("button",name: "btnG") } //
songLink { $(someXpath) } //syntax element.className

}
....
void assertSongInResults2(String xpathOfSongLink){
println "Waiting on video link "+ xpathOfSongLink
someXpath=xpathOfSongLink
waitFor {
songLink.displayed
}
}

关于xpath - 在 Geb 中动态设置内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25494628/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com