在groovy页面中使用findElement

在groovy页面中使用findElement,groovy,geb,Groovy,Geb,如果这个问题看起来微不足道,我道歉,。。但我对groovy/selenium是非常陌生的,因为它是maven系统的一部分,我一直在尝试使用这个方法,我需要了解我缺少了什么 我得到的错误如下: groovy.lang.MissingMethodException: No signature of method: GebConfig.findElement() is applicable for argument types: (org.openqa.selenium.By$ByName) 我需要

如果这个问题看起来微不足道,我道歉,。。但我对groovy/selenium是非常陌生的,因为它是maven系统的一部分,我一直在尝试使用这个方法,我需要了解我缺少了什么

我得到的错误如下:

groovy.lang.MissingMethodException: No signature of method: GebConfig.findElement() is applicable for argument types: (org.openqa.selenium.By$ByName)
我需要在网页上定位元素,并希望使用findElement方法,但是我的代码在groovy中作为步骤定义的一部分。 经过多次尝试,我最终得出以下结论,但我一无所获:

package step_definitions
import features.support.Requests

import geb.*
import org.apache.commons.io.*
import org.openqa.selenium.By
import org.openqa.selenium.WebDriver
import org.openqa.selenium.WebElement
import org.openqa.selenium.*
import org.openqa.selenium.remote.*
import cucumber.api.groovy.EN.*

When(~/^find the element named "(.*?)"$/) { String btnName ->
WebElement myElement = driver.findElement(By.name(btnName));
}
我知道我可以用下面这样的东西作为按钮,也可以用类似的东西作为单选按钮和输入字段:

browser.$(‘input’, name: ‘btnK’)
$(‘input’, name: ‘btnK’)
但我更想知道如何使用findElement方法

任何帮助都将不胜感激

谢谢


Jim….

我可以看出您正在将Geb与JVM一起使用。如果已按照中的说明使用
geb.binding.BindingUpdater
设置环境,则步骤中可用的方法和属性如中所列。您将注意到,该列表中没有
驱动程序
属性-如果您希望访问驱动程序实例,则必须从
浏览器
获取该实例:

When(~/^find the element named "(.*?)"$/) { String myName ->
    WebElement myElement = browser.driver.findElement(By.name(btnName));
}

我没有使用geb.binding.BindingUpdater,第二个链接中列出的快捷方式没有一个有效(我尝试过的少数几个是go/waitFor)。我将研究如何调整浏览器的启动方式并报告。听上去,如果这些快捷命令有效,那么您提供的建议也可能有效。现在更接近,。。之前的评论应该是to/waitFor不起作用,。。但“走”了。我现在可以用您提供的一行程序找到一个元素——我缺少的是从浏览器中获取驱动程序实例。我能让findElement语句与assert一起工作吗?我使用了一种似乎有效的try/catch方法。我昨晚也试过了,但在我发表上述评论之前一定把事情弄糟了。