Geb устанавливает значения для выбора проблемы

У меня проблемы с выбором значения из списка

<select name="max">
    <option value="25">25</option>
    <option value="50" selected="selected">50</option>
    <option value="100">100</option>
</select>

На моей странице у меня есть:

class TableSectionModule extends Module {

    static base = { $('#runList') }

    static content = {
               tablePaginationSelect { $("select", name : "max") }
    }
}

Я использовал в своей спецификации все эти вызовы:

runs.table.tablePaginationSelect = "100"

Я также пробовал это:

 runs.table.tablePaginationSelect.value('100')

Но у меня есть исключение

org.openqa.selenium.WebElement.setSelected()V
java.lang.NoSuchMethodError: org.openqa.selenium.WebElement.setSelected()V
    at org.openqa.selenium.support.ui.Select.selectByValue(Select.java:176)
    at geb.navigator.NonEmptyNavigator.setSelectValue(NonEmptyNavigator.groovy:591)
    at geb.navigator.NonEmptyNavigator.setInputValue(NonEmptyNavigator.groovy:548)
    at geb.navigator.NonEmptyNavigator.setInputValues_closure33(NonEmptyNavigator.groovy:542)
    at geb.navigator.NonEmptyNavigator.setInputValues(NonEmptyNavigator.groovy:541)
    at geb.navigator.NonEmptyNavigator.value(NonEmptyNavigator.groovy:319)
    at geb.content.NavigableSupport.methodMissing(NavigableSupport.groovy:123)
    at geb.content.NavigableSupport.propertyMissing(NavigableSupport.groovy:141)

Я использую Grails с Geb, и вот зависимости, которые я использую:

dependencies {
        // specify dependencies here under either 'build', 'compile', 'runtime', 'test' or 'provided' scopes e.g.

        // runtime 'mysql:mysql-connector-java:5.1.22'

        test("org.seleniumhq.selenium:selenium-chrome-driver:$seleniumVersion")
        test("org.seleniumhq.selenium:selenium-firefox-driver:$seleniumVersion")

        // You usually only need one of these, but this project uses both
        //test "org.codehaus.geb:geb-spock:$gebVersion"
        test "org.spockframework:spock-grails-support:0.7-groovy-2.0"
        test "org.gebish:geb-spock:0.9.0"
        test "org.codehaus.geb:geb-spock:0.7.2"
        test "org.seleniumhq.selenium:selenium-support:2.0a7"

    }

person ErEcTuS    schedule 08.08.2013    source источник


Ответы (1)


Синтаксис .value('100') правильный. Я использовал образец проекта gradle+geb (поэтому без Grails и немного других зависимостей), который у меня лежал, воссоздал ваш раскрывающийся список и ваш модуль и смог повлиять на него с помощью этого синтаксиса.

Попробуйте без использования Module. Полностью обойдите его и посмотрите, что это вам даст:

$('select' name:'max').value('100')

Обновить

Вот что я сделал, чтобы увидеть изменения, происходящие на экране (с парой проверок работоспособности println):

    def sel = $('select', name:'max')
    sel.size() == 1
    System.out.println(sel.getClass().name)
    System.out.println(sel)
    System.out.println(sel.value())
    Thread.sleep( 500 )
    sel.value ( "25"  )
    Thread.sleep( 500 )
    sel.value ( "50")
    Thread.sleep( 500 )
    sel.value ( "100")
    Thread.sleep( 500 )
    System.out.println(sel.value())

Кроме того, после завершения теста обязательно просмотрите результаты теста. Для меня это в build/test-results. Кроме того, вы можете включить вывод отладки в gradle: gradlew build --debug. Это может быть очень полезно.

person inanutshellus    schedule 09.08.2013
comment
Спасибо Габриэль за ваш ответ. У меня больше нет ошибки, НО сейчас ничего не происходит... поле выбора не изменилось. Есть идеи? - person ErEcTuS; 09.08.2013
comment
Я обновил свой ответ еще несколькими предложениями. Надеюсь, там что-то вытряхнет. - person inanutshellus; 09.08.2013
comment
Вы также можете рассмотреть возможность обновления вашей зависимости от селена. Похоже, вы используете альфа-версию (2.0a7). Они до 2.33.0. - person inanutshellus; 09.08.2013
comment
ЭЙ СПАСИБО, Габриэль... Мне пришлось изменить версию поддержки селена на 2.33.0... теперь она работает с .value('100') - person ErEcTuS; 12.08.2013