2010-10-08 5 views
2

Puis-je écrire du code watir pour cliquer sur cet élément de bouton?Comment cliquer sur un élément de bouton dans watir?

L'événement onclick doit être déclenché.

<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> 

Edit:

Je l'ai essayé de cette façon:

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

Mais il semble onclick est pas pris en charge:

> 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 

Répondre

6

L'un d'eux pourrait fonctionner (non testé):

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 

Plus d'informations:

+0

Merci, j'ai essayé la deuxième ligne (browser.cell) et ça marche. – mit

1

J'ai rencontré des problèmes comme celui-ci. Si l'attribut onclick n'est pas supporté, vous pouvez faire quelque chose comme ça.

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

Ceci est juste quelque chose que je suis en train de taper de la mémoire, donc il pourrait avoir besoin de peaufiner. Mais cela vous permet de faire correspondre des choses que Watir ne supporte pas nécessairement.

Je pense qu'il ya aussi une certaine façon de faire des requêtes XPath avec Watir, vous voudrez peut-être examiner cela aussi bien