很抱歉,这个问题似乎微不足道,..但是我对groovy /硒感到非常陌生,因为它已经成为我被抛出的Maven系统的一部分,并且需要了解我在尝试使用此方法时缺少的东西工作。
我得到的错误如下:
groovy.lang.MissingMethodException: No signature of method: GebConfig.findElement() is applicable for argument types: (org.openqa.selenium.By$ByName)
我需要在网页上定位元素,并且想使用findElement方法,但是我的代码是步骤定义的一部分。 经过多次尝试,我最终获得了以下结果,但是却无济于事:
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…..
答案 0 :(得分:1)
我可以看到您正在将Cub与Cucumber JVM一起使用。如果您已经按照http://gebish.org/manual/current/#writing-your-own-steps中的说明使用geb.binding.BindingUpdater
设置了环境,那么您的步骤中可用的方法和属性将列在http://gebish.org/manual/current/#browser-methods-and-properties中。您会注意到该列表中没有driver
属性-如果您想访问驱动程序实例,则必须从browser
获取它:
When(~/^find the element named "(.*?)"$/) { String myName ->
WebElement myElement = browser.driver.findElement(By.name(btnName));
}