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")