Геб: как мне выбрать значение из выпадающего списка?

У меня большие трудности с одной частью моего теста Геба; как выбрать значение из выпадающего списка. Я пробовал четыре разных способа, и ни один из них не работает. Это либо приведет к сбою теста, либо пропустит его. Любая помощь будет оценена

Элемент формы HTML (102727 — это идентификатор Калифорнии в таблице БД...)

<div class="col-sm-2">
    <label id="submitterState-label" class="toplabel" for=submitterState>State</label>
    <g:select name="submitterState" id="submitterState" from="stuff here..." class="form-control" optionKey="id" value="morestuff" noSelection="['null':'']" aria-labelledby="submitterState-label"/>
</div>

Результирующий HTML:

<div class="col-sm-2">
        <label id="submitterState-label" class="toplabel" for=submitterState>State</label>
        <select name="submitterState" id="submitterState" class="form-control" aria-labelledby="submitterState-label" >
<option value="null"></option>
<option value="102722" >Alabama</option>
<option value="102723" >Alaska</option>
<option value="102724" >American Samoa</option>
<option value="102721" >APO Address - AA</option>
<option value="102725" >Arizona</option>
<option value="102726" >Arkansas</option>
<option value="102727" >California</option>
<option value="102728" >Colorado</option>
<option value="102729" >Connecticut</option>
<option value="102730" >Delaware</option>
<option value="102731" >District of Columbia</option>
<option value="102732" >Florida</option>
<option value="102733" >Georgia</option>
<option value="102734" >Guam</option>
<option value="102735" >Hawaii</option>
<option value="102736" >Idaho</option>
<option value="102737" >Illinois</option>
<option value="102738" >Indiana</option>
<option value="102739" >Iowa</option>
<option value="102740" >Kansas</option>
<option value="102741" >Kentucky</option>
<option value="102742" >Louisiana</option>
<option value="102743" >Maine</option>
<option value="102744" >Maryland</option>
<option value="102745" >Massachusetts</option>
<option value="102746" >Michigan</option>
<option value="102747" >Minnesota</option>
<option value="102748" >Mississippi</option>
<option value="102749" >Missouri</option>
<option value="102750" >Montana</option>
<option value="102751" >Nebraska</option>
<option value="102752" >Nevada</option>
<option value="102753" >New Hampshire</option>
<option value="102754" >New Jersey</option>
<option value="102755" >New Mexico</option>
<option value="102756" >New York</option>
<option value="102757" >North Carolina</option>
<option value="102758" >North Dakota</option>
<option value="102759" >Northern Mariana Islands</option>
<option value="102760" >Ohio</option>
<option value="102761" >Oklahoma</option>
<option value="102762" >Oregon</option>
<option value="102763" >Pennsylvania</option>
<option value="102764" >Puerto Rico</option>
<option value="102765" >Rhode Island</option>
<option value="102766" >South Carolina</option>
<option value="102767" >South Dakota</option>
<option value="102768" >Tennessee</option>
<option value="102769" >Texas</option>
<option value="102770" >U.S. Virgin Islands</option>
<option value="102771" >Utah</option>
<option value="102772" >Vermont</option>
<option value="102773" >Virginia</option>
<option value="102774" >Washington</option>
<option value="102775" >West Virginia</option>
<option value="102776" >Wisconsin</option>
<option value="102777" >Wyoming</option>
</select>

Тесты Geb (ни один из них не работает...):

$('#submitterState').value(102727)
    $("form").submitterState = 102727 
    $('select', name: "submitterState").value(102727) 
    $('div.col-sm-2').find('select', name: "submitterState").value(102727)

person ry1633    schedule 19.09.2014    source источник
comment
все вышеперечисленные тесты возвращают эту ошибку: java.lang.IllegalArgumentException: не удалось выбрать параметр с текстом или значением: 102727   -  person ry1633    schedule 20.09.2014
comment
Не могли бы вы показать полученный html (а не код gsp), с которым вы работаете?   -  person erdi    schedule 20.09.2014


Ответы (3)


Я обнаружил, что точная эмуляция пользователя - лучший способ сделать это. Сначала нажмите на <select>, затем нажмите на нужный <option>.

$('#submitterState').click()
$('#submitterState').find("option").find{ it.value() == "102727" }.click()

Очевидно, это выглядит намного лучше в вызове метода, но это должно вас заинтересовать.

person jk47    schedule 22.09.2014
comment
Я попробовал твой способ. Но он возвращает эту ошибку. java.lang.NullPointerException: невозможно вызвать метод click() для нулевого объекта - person ry1633; 22.09.2014
comment
Извините, я не прочитал ваш HTML, попробуйте find{ it.value() == 102727}.click(), если это не сработает, опубликуйте полное сообщение об ошибке. - person jk47; 22.09.2014
comment
по-прежнему возвращает ту же ошибку java.lang.NullPointerException: невозможно вызвать метод click() для нулевого объекта. Я не могу опубликовать остальную часть ошибки, потому что она содержит некоторую информацию, конфиденциальную для организации. - person ry1633; 22.09.2014
comment
К какой строке это относится? Первый или второй? - person jk47; 22.09.2014
comment
Понятно. Ваша вторая линия работала нормально. Также был неправильно указан идентификатор в моем тестовом файле базы данных xml. - person ry1633; 22.09.2014

import org.openqa.selenium.support.ui.Select;
import org.openqa.selenium.By; 

Select dropdown = new Select(driver.findElement(By.id("var_302")));
             dropdown.selectByVisibleText("Hispanic or Latino"); 

Попробуйте это.

person user6775905    schedule 30.08.2016

Вам нужно попробовать:

$('select', name: "submitterState") = "102727" 
person Nikhil    schedule 17.01.2019