首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Firewatir: Firewatir动态下拉问题

Firewatir: Firewatir动态下拉问题
EN

Stack Overflow用户
提问于 2010-10-27 02:58:06
回答 2查看 729关注 0票数 0

我在从下拉列表中选择任何项目时都有任何问题。下面是来自我们网站的HTML。HTML如下所示

代码语言:javascript
复制
<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代码,如下所示:

代码语言:javascript
复制
@browser.text_field(:id,"cmbParentEntityId").set("1")

这将搜索以1开头的所有帐户。将值设置为1后,下拉菜单将仅显示以1开头的帐户。

代码语言:javascript
复制
 <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代码

代码语言:javascript
复制
@browser.div(:class => "x-combo-list-inner", :text => "10_12_2010").click

但是什么都没有发生,我已经在网上搜索了,但没有找到任何答案,如果有人能帮我指出正确的方向,我真的很感激。

谢谢

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-10-27 20:00:30

什么都没发生是什么意思?如果我尝试您提供的代码,我会得到一个预期的UnknownObjectException:

代码语言:javascript
复制
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

这是因为您正在尝试查找一个类为"x-combo-list-inner“、文本为"10_12_2010”的div元素。没有这样的元素。请看以下内容:

代码语言:javascript
复制
irb(main):007:0> b.div(:class => "x-combo-list-inner").text
=> "10_12_2010\r\n10_13_2010"

"x-combo-list-inner“的文本包括每个子元素的文本。您可以像这样搜索那个特定的子元素:

代码语言:javascript
复制
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>"

或者使用regexp:

代码语言:javascript
复制
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事件被准确地绑定到这些元素上,然后手动触发事件:

代码语言: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
票数 1
EN

Stack Overflow用户

发布于 2010-10-27 17:58:35

我猜应该显式地触发一些JavaScript事件。请参阅How to find out which JavaScript events fired?

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4027026

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档