Ruby Watir:when_present没有适当地等到事情存在?

时间:2013-11-20 16:32:09

标签: ruby watir

我遇到一个问题,让when_present实际等到元素出现在某些情况下。问题只是间歇性地发生,但在更改页面时总是会发生。

示例:我想在当前页面上单击“保存”,然后在后续页面的字段中输入文本。

如果我这样做:

 $browser.button(:value => "Save").click
 sleep 3
 $browser.text_field(:label => "Name").when_present.set "Leelluu"

运行正常。

但是,如果我这样做:

 $browser.button(:value => "Save").click
 $browser.text_field(:label => "Name").when_present.set "Leelluu"

单击“保存”后,它会立即超时/崩溃。

我该如何解决这个问题?

(我知道,似乎我已经通过使用睡眠修复了它,但是我的老板告诉我,睡眠浪费时间。他说我需要从代码中删除所有这些并找到另一种方式。)

使用真实示例进行更新.....我输入搜索文本,然后单击搜索按钮,然后选择返回列表中前导复选框旁边的复选框。

 $browser.text_field(:id => /.*search*./).set "Snow Leopard"
 $browser.button(:id => "save_filter_PricebookEntry").when_present.click
 $browser.checkbox(:id => "allBox").when_present.set

我得到一个“元素不可点击”(即使它有一个when_present)。

 unknown error: Element is not clickable at point (251, 482). Other element would receive the click:
 ...
 (Session info: chrome=31.0.1650.57) (Driver info: chromedriver=2.2,platform=Windows NT 6.1 SP1 x86_64)

 ["D:/Ruby193/lib/ruby/gems/1.9.1/gems/selenium-webdriver-2.35.1/lib/selenium/webdriver/remote/response.rb:51:in `assert_ok'", "D:/Ruby193/lib/ruby/gems/1.9.1/gems/selenium-webdriver-2.35.1/lib/selenium/webdriver/remote/response.rb:15:in `initialize'", "D:/Ruby193/lib/ruby/gems/1.9.1/gems/selenium-webdriver-2.35.1/lib/selenium/webdriver/remote/http/common.rb:59:in `new'", "D:/Ruby193/lib/ruby/gems/1.9.1/gems/selenium-webdriver-2.35.1/lib/selenium/webdriver/remote/http/common.rb:59:in `create_response'", "D:/Ruby193/lib/ruby/gems/1.9.1/gems/selenium-webdriver-2.35.1/lib/selenium/webdriver/remote/http/default.rb:66:in `request'", "D:/Ruby193/lib/ruby/gems/1.9.1/gems/selenium-webdriver-2.35.1/lib/selenium/webdriver/remote/http/common.rb:40:in `call'", "D:/Ruby193/lib/ruby/gems/1.9.1/gems/selenium-webdriver-2.35.1/lib/selenium/webdriver/remote/bridge.rb:634:in `raw_execute'", "D:/Ruby193/lib/ruby/gems/1.9.1/gems/selenium-webdriver-2.35.1/lib/selenium/webdriver/remote/bridge.rb:612:in `execute'", "D:/Ruby193/lib/ruby/gems/1.9.1/gems/selenium-webdriver-2.35.1/lib/selenium/webdriver/remote/bridge.rb:369:in `clickElement'", "D:/Ruby193/lib/ruby/gems/1.9.1/gems/selenium-webdriver-2.35.1/lib/selenium/webdriver/common/element.rb:54:in `click'", "D:/Ruby193/lib/ruby/gems/1.9.1/gems/watir-webdriver-0.6.4/lib/watir-webdriver/elements/checkbox.rb:26:in `set'", "D:/Ruby193/lib/ruby/gems/1.9.1/gems/watir-webdriver-0.6.4/lib/watir-webdriver/wait.rb:100:in `method_missing'", "D:/Desktop/jardine/utils.rb:143:in `addQLIs'", "D:/Desktop/jardine/noSleepTest.rb:31:in `block in '", "D:/Desktop/jardine/framework.rb:39:in `execute'", "D:/Desktop/jardine/framework.rb:61:in `block in runTestCases'", "D:/Desktop/jardine/framework.rb:60:in `each'", "D:/Desktop/jardine/framework.rb:60:in `runTestCases'", "jardine.rb:66:in `
 '"]

0 个答案:

没有答案