watir webdriver select_list элемент не виден ошибка

Я пытаюсь выбрать опцию из списка выбора с помощью watir-webdriver.

версия gem для watir-webdriver: 0.6.4 Ruby 1.9.3 на Mac OSX Lion

HTML-код выбранного списка:

<select id="cc.expiryMonth" name="cc.expiryMonth">
<option value="0">Month</option>
<option value="1">01</option>
<option value="2">02</option>
<option value="3">03</option>
<option value="4">04</option>
<option value="5">05</option>
<option value="6">06</option>
<option value="7">07</option>
<option value="8">08</option>
<option value="9">09</option>
<option value="10">10</option>
<option value="11">11</option>
<option value="12">12</option>
</select>

Код, который я использовал

@browser.select_list(:name => "cc.expiryMonth").options[4].select

Я получаю ошибку

Element is not currently visible and so may not be interacted with (Selenium::WebDriver::Error::ElementNotVisibleError)
  [remote server] file:///var/folders/_c/j__zdvw93gqgyyvzwmmgtwwr0000gn/T/webdriver-profile20130620-1023-1s8kag6/extensions/fxdriver@googlecode.com/components/command_processor.js:7736:in `fxdriver.preconditions.visible'
  [remote server] file:///var/folders/_c/j__zdvw93gqgyyvzwmmgtwwr0000gn/T/webdriver-profile20130620-1023-1s8kag6/extensions/fxdriver@googlecode.com/components/command_processor.js:10437:in `DelayedCommand.prototype.checkPreconditions_'
  [remote server] file:///var/folders/_c/j__zdvw93gqgyyvzwmmgtwwr0000gn/T/webdriver-profile20130620-1023-1s8kag6/extensions/fxdriver@googlecode.com/components/command_processor.js:10456:in `DelayedCommand.prototype.executeInternal_/h'
  [remote server] file:///var/folders/_c/j__zdvw93gqgyyvzwmmgtwwr0000gn/T/webdriver-profile20130620-1023-1s8kag6/extensions/fxdriver@googlecode.com/components/command_processor.js:10461:in `DelayedCommand.prototype.executeInternal_'
  [remote server] file:///var/folders/_c/j__zdvw93gqgyyvzwmmgtwwr0000gn/T/webdriver-profile20130620-1023-1s8kag6/extensions/fxdriver@googlecode.com/components/command_processor.js:10401:in `DelayedCommand.prototype.execute/<'
  ./features/step_definitions/Wotif_FlightSearch_DOM_steps.rb:145:in `/^I enter all details on booking page$/'

Прошел код watir-webdriver в библиотеке gem и исчерпал все способы выбора опции, все они выдают одну и ту же ошибку.

@browser.select_list(:name => "cc.expiryMonth").focus

успешно, но выбрав опцию выдает элемент не видимая ошибка. Также пробовал send_keys безуспешно. Буду признателен за любые предложения о том, как справиться с этим

ОБНОВИТЬ:

@browser.select_list(:name => "cc.expiryMonth").options[8].value

возвращает значение, но

@browser.select_list(:name => "cc.expiryMonth").options[8].select

или же

@browser.select_list(:name => "cc.expiryMonth").select @browser.select_list(:name => "cc.expiryMonth").options[8].value returns element not found error    

4 ответа

Решение

Наконец-то я смог решить эту проблему, следуя одному из других вопросов по stackru, где предлагается использовать javascript для выбора опции в списке выбора. Больше ничего не получалось.

Ты пробовал это:

@browser.select_list(:name => "cc.expiryMonth").select '04'

или даже

b = Watir::Browser.start 'bit.ly/watir-webdriver-demo'
s = b.select_list :name => 'cc.expiryMonth'
s.select '04'
s.selected_options

скажи мне, что случилось

Это может быть проблема времени. Попробуй это:

@browser.select_list(:name => "cc.expiryMonth").options[4].when_present.select

Более подробная информация на http://watirwebdriver.com/waiting/

Интересно, есть ли на странице несколько списков выбора с таким именем, и Watir-webdriver ожидает первого элемента, но тот, который виден, на самом деле является вторым.

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

 p @browser.select_lists(:name => "cc.expiryMonth").count

Возвращает ли он больше 1 в командной строке / эквивалент Mac? Если это так, вы можете использовать индекс, чтобы выбрать тот, который вы хотите вместо

@browser.select_list(:name => "cc.expiryMonth", :index => 1).select("04")
Другие вопросы по тегам