Я использую geb для автоматизации веб-приложения. Я хочу определить объект страницы, позвонил ему Page1. в зависимости от среды, Page1 может иметь различное количество элементов кнопки. В одной среде кнопка «A» может существовать, а в другой среде кнопка «A» может отсутствовать.Geb: Определение объектов страницы во время выполнения
Во время выполнения я могу загрузить список ожидаемых кнопок в зависимости от используемой мной среды. Позволяет вызвать этот списокList списка. Я хочу использовать этот список для определения моего объекта страницы во время выполнения.
Теперь это то, что я пытался сделать, чтобы решить эту проблему, но, похоже, она не работает. Я всегда получаю эту ошибку: «groovy.lang.MissingMethodException: Нет подписи метода: groovy.util.slurpersupport.NodeChild.call()»
class Page1 extends Page{
static def buttonList
static conntent = {
buttonList.each{ button ->
button {$(By.xpath("//*[text() = '${button}']")) }
}
}
}
нормально, если бы вы знали, какие кнопки следует ожидать, и они были каждый раз, когда вы определяете объект страницы, как это. но «это» не вариант для меня из-за того, что я объяснил выше.
class Page1 extends Page{
static conntent = {
button1 {$(By.xpath("//*[text() = 'button1']")) }
button3 {$(By.xpath("//*[text() = 'button3']")) }
button4 {$(By.xpath("//*[text() = 'button4']")) }
...
}
}
в моем верхнем тестовом уровне сценария я инициализировать этот класс, так что я могу предоставить эту страницу объекта в buttonList она требует. это абстракция коды верхнего уровня сценария:
def "Test Case"(){
when:
butList = ["button1", "button3", "button4",...] //this list is generated somewhere else. it's not actually hard coded like you see here. the buttons in the list depend on the environment
def pageInstance = new Page1()
pageInstance.buttonList = butList
then:
Thread.sleep(30)
when:
//click something to bring me to the Page1 page
then:
at pageInstance
when:
button3.click()//in this case button 3 exists but this is where the code fails
then:
thread.sleep(5000)
}
Я надеюсь, что это то, что некоторые объясняет загадку я нахожусь, я могу идти о решении совершенно неправильном пути.. Я ищу предложения о том, как решить эту проблему. если проблема остается неясной, не стесняйтесь комментировать, и я могу попытаться сделать вещи более ясными.