2013-06-20 6 views
1

Я пытаюсь выбрать вариант из списка выбора с помощью watir-webdriver.watir webdriver select_list элемент не видно ошибки

Watir-WebDriver версия перл: 0.6.4 Руби 1.9.3 на Mac OSX лев

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/[email protected]/components/command_processor.js:7736:in `fxdriver.preconditions.visible' 
    [remote server] file:///var/folders/_c/j__zdvw93gqgyyvzwmmgtwwr0000gn/T/webdriver-profile20130620-1023-1s8kag6/extensions/[email protected]/components/command_processor.js:10437:in `DelayedCommand.prototype.checkPreconditions_' 
    [remote server] file:///var/folders/_c/j__zdvw93gqgyyvzwmmgtwwr0000gn/T/webdriver-profile20130620-1023-1s8kag6/extensions/[email protected]/components/command_processor.js:10456:in `DelayedCommand.prototype.executeInternal_/h' 
    [remote server] file:///var/folders/_c/j__zdvw93gqgyyvzwmmgtwwr0000gn/T/webdriver-profile20130620-1023-1s8kag6/extensions/[email protected]/components/command_processor.js:10461:in `DelayedCommand.prototype.executeInternal_' 
    [remote server] file:///var/folders/_c/j__zdvw93gqgyyvzwmmgtwwr0000gn/T/webdriver-profile20130620-1023-1s8kag6/extensions/[email protected]/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 безуспешно. бы признателен какие-либо предложения о том, как справиться с этой

UPDATE:

@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  
+0

Является ли элемент выбора всегда видимым или вам нужно выполнить действие, чтобы сделать элемент выбора видимым?Образец html и код, который вы пробовали, работают сами по себе, поэтому есть что-то еще о странице, которая вызывает сбой. –

+0

его в нижней части экрана, и webdriver прокручивается там, и настройки других select_lists там успешно ..... – rails4sandeep

ответ

-2

я, наконец, смог решить эту проблему, выполнив один из других вопросов на StackOverflow, где предложение заключается в использовании JavaScript, чтобы выбрать опцию в выберите список. Ничего не сработало. Приятно, что что-то сработало наконец

+0

вы можете рассказать мне ссылку и как вы это сделали, используя скрипт java в watchir-webdriver. – Amerrnath

+0

PLS обновит этот комментарий в ближайшее время. – Amerrnath

+0

Ссылка была бы очень полезна. Как вы используете javascript из watir? – Michael

0

вы попробуете это:

@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 

сказать мне, что до

+0

Привет, Попробовал вариант .select '04'. Его бросание того же элемента ошибки не видно error.Element прямо там, на экране, но webdriver не может идентифицировать его. Испытал сон и ожидал, пока он не существует? и видимо? – rails4sandeep

+0

@ rails4sandeep, есть некоторые ожидания, да, посмотрите [здесь] (http://watirwebdriver.com/waiting/) – e1che

0

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

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

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

+0

Спасибо за ответ. Выполнение timed_out после максимального времени таймаута при использовании метода when_present – rails4sandeep

0

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

Дайте этому попытку:

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

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

@browser.select_list(:name => "cc.expiryMonth", :index => 1).select("04") 
Смежные вопросы