2010-10-26 2 views
0

У меня возникли проблемы с выбором любого предмета из раскрывающегося списка. Ниже приведен HTML-код с нашего сайта. HTML выглядит следующим образомFirewatir: проблема с динамическим сбрасыванием Firewatir

<div class="x-form-field-wrap x-trigger-wrap-focus" 
id="ext-gen157" style="width: 170px;"><input type="hidden" 
id="parentEntity" name="parentEntity" value=""><input type="text" 
id="cmbParentEntityId" autocomplete="off" size="24" class=" 
x-form-text x-form-field x-form-focus" style="width: 145px;"> 
<img class="x-form-trigger x-form-arrow-trigger" 
src="../ext/resources/images/default/s.gif" id="ext-gen158"></div> 

Таким образом, я создал код Watir который выглядит следующим образом:

@browser.text_field(:id,"cmbParentEntityId").set("1") 

, которые ищут для всех учетных записей, начиная с 1.Once значение установлено равным 1, падение вниз показывает только счета, начиная с 1. Ниже приведен HTML-код из выпадающего

<div class="x-combo-list-inner" id="ext-gen336" style="width: 
248px; overflow: auto; height: 40px;"><div class="x-combo-list-item 
x-combo-selected">10_12_2010</div><div 
class="x-combo-list-item ">10_13_2010</div></div> 

Основываясь на приведенном выше коде я создал код Watir

@browser.div(:class => "x-combo-list-inner", :text => "10_12_2010").click 

Но ничего не происходит, я искал в Интернете, но не мог найти ответы, я очень признателен, если кто-нибудь может помочь мне указать на правильное направление.

Thanks

+0

Я попытался с помощью XPATH (идентификатор («Ext-gen336»)/х: Div [ 1]), но получая сообщение об ошибке –

ответ

1

Что значит, что ничего не происходит? Если я пытаюсь код, предоставленный вами, то я получу ожидаемый UnknownObjectException:

irb(main):003:0> b.div(:class => "x-combo-list-inner", :text => "10_12_2010").click 
Watir::Exception::UnknownObjectException: Unable to locate element, using {:class=>"x-combo-list-inner", :text=>"10_12_2010"} 
     from c:/Ruby/lib/ruby/gems/1.8/gems/watir-1.6.6/lib/watir/element.rb:57:in `assert_exists' 
     from c:/Ruby/lib/ruby/gems/1.8/gems/watir-1.6.6/lib/watir/element.rb:315:in `enabled?' 
     from c:/Ruby/lib/ruby/gems/1.8/gems/watir-1.6.6/lib/watir/element.rb:62:in `assert_enabled' 
     from c:/Ruby/lib/ruby/gems/1.8/gems/watir-1.6.6/lib/watir/element.rb:259:in `click!' 
     from c:/Ruby/lib/ruby/gems/1.8/gems/watir-1.6.6/lib/watir/element.rb:229:in `click' 
     from (irb):3 

Это потому, что вы пытаетесь найти Div элемент с классом «х-комбо-список-внутренний» и текст «10_12_2010». Не существует такого элемента. См. Так:

irb(main):007:0> b.div(:class => "x-combo-list-inner").text 
=> "10_12_2010\r\n10_13_2010" 

Текст «x-combo-list-inner» содержит тексты для каждого дочернего элемента. Вы можете искать для этого конкретного дочернего элемента, как это:

irb(main):008:0> b.div(:class => "x-combo-list-inner").div(:text => "10_12_2010").html 
=> "\r\n<DIV class=\"x-combo-list-item &#13;&#10;x-combo-selected\">10_12_2010</DIV>" 

Или с регулярными выражениями:

irb(main):009:0> b.div(:class => "x-combo-list-inner", :text => /10_12_2010/).text 
=> "10_12_2010\r\n10_13_2010" 

И когда дело доходит до нажатия, то вы должны знать, какой именно Div вам нужно нажать - это первый или второй. Кроме того, если ничего не случится, то вы должны выяснить, какие события JavaScript являются переплетены к этим элементам точно, а затем запускать события вручную:

irb(main):010:0> div = b.div(:class => "x-combo-list-inner").div(:text => "10_12_2010") 
=> #<Watir::Div:0x5846088 located=false how={:text=>"10_12_2010"} what=nil> 
irb(main):013:0> div.fire_event("onmousedown") 
=> nil 
irb(main):014:0> div.fire_event("onmouseup") 
=> nil 
+0

Большое спасибо за предоставление ценной помощи. Я смог решить проблему, как только я понял событие javaScript и правильный элемент. –

+0

Большое спасибо за предоставление ценной помощи. Я смог решить проблему, как только я понял событие javaScript и правильный элемент. –

1

Я предполагаю, что какое-то событие JavaScript должно быть явно запущено. См. How to find out which JavaScript events fired?

+0

Да, это было связано с событием JavaScript, и ссылка, которую вы предоставили, была весьма полезна. –

+0

Не стесняйтесь проголосовать за мой ответ. :) –

Смежные вопросы