2010-10-08 64 views
2

我可以写watir代码来点击这个按钮元素吗?如何点击watir中的按钮元素?

必须触发onclick事件。

<button onclick="wizardAction('start', 'Starte Upgrade')"> 
    <table align="center" cellspacing="0"> 
     <tbody> 
      <tr> 
       <td><img src="/static/images/stock/gtk-ok.png" align="left" height="16" width="16"></td> 
       <td nowrap="nowrap">Starte Upgrade</td> 
      </tr> 
     </tbody> 
    </table> 
</button> 

编辑:

我试着这样说:

ie.button(:onclick, /start/).click 

但似乎的onclick不支持:

> ruby upgrade-module.rb 

c:/ruby/lib/ruby/gems/1.8/gems/watir-1.6.5/lib/watir/locator.rb:143:in `match?': 
onclick is an unknown way of finding an <INPUT> element ((?-mix:start)) (Watir: 
:Exception::MissingWayOfFindingObjectException) 
     from c:/ruby/lib/ruby/gems/1.8/gems/watir-1.6.5/lib/watir/locator.rb:126 
:in `locate' 
     from c:/ruby/lib/ruby/gems/1.8/gems/watir-1.6.5/lib/watir/locator.rb:124 
:in `each' 
     from c:/ruby/lib/ruby/gems/1.8/gems/watir-1.6.5/lib/watir/locator.rb:124 
:in `locate' 
     from c:/ruby/lib/ruby/gems/1.8/gems/watir-1.6.5/lib/watir/locator.rb:122 
:in `catch' 
     from c:/ruby/lib/ruby/gems/1.8/gems/watir-1.6.5/lib/watir/locator.rb:122 
:in `locate' 
     from c:/ruby/lib/ruby/gems/1.8/gems/watir-1.6.5/lib/watir/locator.rb:119 
:in `each' 
     from c:/ruby/lib/ruby/gems/1.8/gems/watir-1.6.5/lib/watir/locator.rb:119 
:in `locate' 
     from c:/ruby/lib/ruby/gems/1.8/gems/watir-1.6.5/lib/watir/container.rb:8 
04:in `locate_input_element' 
     from c:/ruby/lib/ruby/gems/1.8/gems/watir-1.6.5/lib/watir/input_elements 
.rb:5:in `locate' 
     from c:/ruby/lib/ruby/gems/1.8/gems/watir-1.6.5/lib/watir/element.rb:53: 
in `assert_exists' 
     from c:/ruby/lib/ruby/gems/1.8/gems/watir-1.6.5/lib/watir/element.rb:288 
:in `enabled?' 
     from c:/ruby/lib/ruby/gems/1.8/gems/watir-1.6.5/lib/watir/element.rb:60: 
in `assert_enabled' 
     from c:/ruby/lib/ruby/gems/1.8/gems/watir-1.6.5/lib/watir/element.rb:233 
:in `click!' 
     from c:/ruby/lib/ruby/gems/1.8/gems/watir-1.6.5/lib/watir/element.rb:219 
:in `click' 
     from upgrade-module.rb:19 

回答

6

其中一个可以工作(未测试):

browser.image(:src => /gtk-ok/).click 
browser.cell(:text => "Starte Upgrade").click 
browser.button(:index => 1).click # assumes that it is the first button on the page 
browser.button(:xpath => "//button[@onclick='wizardAction(\'start\', \'Starte Upgrade\')']").click 

的更多信息:

+0

Željko谢谢,我尝试了第二行(browser.cell),它只是工作。 – mit 2010-10-21 00:39:28

1

我碰到像这样的问题。如果onclick属性不被支持,你可以这样做。

b. 
    buttons. 
    to_a. 
    select{|but| but.attribute_value(:onclick).match(/start/) }. 
    first. 
    click 

这只是我从内存中输入的东西,所以它可能需要一些调整。但它可以让你匹配Watir不一定支持的东西。

我觉得有也有一些方法做的Watir XPath查询,你可能要考虑这样做,以及