在Groovy页面中使用findElement

时间:2019-03-29 22:30:47

标签: groovy geb

很抱歉,这个问题似乎微不足道,..但是我对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…..

1 个答案:

答案 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));
}