我在从下拉菜单中选择任何项目时遇到任何问题。以下是我们网站的HTML。 HTML看起来像这样
<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开头的所有帐户。一旦该值设置为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
但是没有任何事情发生,我在网上搜索但找不到任何答案,我真的很感激,如果有人能帮助我指出正确的方向。
由于
答案 0 :(得分:1)
我的猜测是应该明确触发一些JavaScript事件。见How to find out which JavaScript events fired?
答案 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元素,其类为“x-combo-list-inner”,文本为“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 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