Cucumber Watir::Wait.until方法能否等待多个元素

Cucumber Watir::Wait.until方法能否等待多个元素,cucumber,watir-webdriver,Cucumber,Watir Webdriver,目前,为了等待三个不同的元素,我调用了Watir::wait.until方法三次: def wait Watir::Wait.until {@browser.text_field(:css => '.inputtext').exists?} Watir::Wait.until {@browser.text_field(:css=> '.inputpassword').exists?} Watir::Wait.until {@browser.button(:css =>

目前,为了等待三个不同的元素,我调用了Watir::wait.until方法三次:

def wait
  Watir::Wait.until {@browser.text_field(:css => '.inputtext').exists?}
  Watir::Wait.until {@browser.text_field(:css=> '.inputpassword').exists?}
  Watir::Wait.until {@browser.button(:css => 'input#u_0_1').exists?}
end
是否可以有一个等待所有三个元素的
until
方法调用?例如,类似于:

def wait 
  Watir::Wait.until {@browser.text_field(:css => '.inputtext').exists?,
    @browser.button(:css => 'input#u_0_1').exists?,
    @browser.text_field(:css=> '.inputpassword').exists?}
end

until
方法将等待块的最后一个表达式(大括号)计算为true。因此,您只需要将所有检查联接到一个表达式中。这可以通过使用
&
|
来实现

考虑到您希望所有检查的计算结果都为true,请使用
&&
也可以):

def wait 
  Watir::Wait.until {
    @browser.text_field(:css => '.inputtext').exists? &&
    @browser.button(:css => 'input#u_0_1').exists? &&
    @browser.text_field(:css=> '.inputpassword').exists?
  }
end