Использование findElement в заводных страницах - PullRequest
1 голос
/ 30 марта 2019

Извиняюсь, если этот вопрос кажется тривиальным, .. но я очень плохо знаком с groovy / selenium как частью системы 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 Ответ

1 голос
/ 31 марта 2019

Я вижу, что вы используете Geb с Cucumber JVM.Если вы настроили свою среду, используя geb.binding.BindingUpdater, как описано в http://gebish.org/manual/current/#writing-your-own-steps, то методы и свойства, доступные на ваших шагах, будут такими же, как перечислены в 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));
}
...