Как нажать на элемент кнопки в watir? - PullRequest
2 голосов
/ 09 октября 2010

Могу ли я написать код 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>

Edit:

Я пробовал это так:

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

Ответы [ 2 ]

6 голосов
/ 11 октября 2010

Один из них может работать (не проверено):

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

Дополнительная информация:

1 голос
/ 09 октября 2010

Я столкнулся с такими проблемами. Если атрибут onclick не поддерживается, вы можете сделать что-то вроде этого.

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

Это просто то, что я печатаю по памяти, так что, возможно, потребуется немного подправить. Но это позволяет вам сопоставлять то, что Ватир не обязательно поддерживает.

Я думаю, что есть также какой-то способ выполнять запросы XPath с Watir, возможно, вы захотите разобраться и с этим

...