@p0deje 
thank you very much for your reply first of all
here reproduce the problem:
my code:
require 'watir'
require 'watir-webdriver'
b=Watir::Browser.new :chrome
b.goto 'http://www.expedia.co.uk/Hotels'
puts b.frame(:id,'CalFrame_DPD').exist?
puts b.frame(:id,'CalFrame_DPD').button(:id,'iamnotexist').exist?

and it return:

C:/Ruby200/lib/ruby/gems/2.0.0/gems/selenium-webdriver-2.33.0/lib/selenium/webdriver/remote/response.rb:51:in
 `assert_ok': switchFrame execution failed; 
(Selenium::WebDriver::Error::StaleElementReferenceError)
 Element does not exist in cache
        from 
C:/Ruby200/lib/ruby/gems/2.0.0/gems/selenium-webdriver-2.33.0/lib/selenium/webdriver/remote/response.rb:15:in
 `initialize'
        from 
C:/Ruby200/lib/ruby/gems/2.0.0/gems/selenium-webdriver-2.33.0/lib/selenium/webdriver/remote/http/common.rb:59:in
 `new'
        from 
C:/Ruby200/lib/ruby/gems/2.0.0/gems/selenium-webdriver-2.33.0/lib/selenium/webdriver/remote/http/common.rb:59:in
 `create_response'
        from 
C:/Ruby200/lib/ruby/gems/2.0.0/gems/selenium-webdriver-2.33.0/lib/selenium/webdriver/remote/http/default.rb:66:in
 `request'
        from 
C:/Ruby200/lib/ruby/gems/2.0.0/gems/selenium-webdriver-2.33.0/lib/selenium/webdriver/remote/http/common.rb:40:in
 `call'
        from 
C:/Ruby200/lib/ruby/gems/2.0.0/gems/selenium-webdriver-2.33.0/lib/selenium/webdriver/remote/bridge.rb:629:in
 `raw_execute'
        from 
C:/Ruby200/lib/ruby/gems/2.0.0/gems/selenium-webdriver-2.33.0/lib/selenium/webdriver/remote/bridge.rb:607:in
 `execute'
        from 
C:/Ruby200/lib/ruby/gems/2.0.0/gems/selenium-webdriver-2.33.0/lib/selenium/webdriver/remote/bridge.rb:185:in
 `switchToFrame'
        from 
C:/Ruby200/lib/ruby/gems/2.0.0/gems/selenium-webdriver-2.33.0/lib/selenium/webdriver/common/target_locator.rb:18:in
 `frame'
        from 
C:/Ruby200/lib/ruby/gems/2.0.0/gems/watir-webdriver-0.6.4/lib/watir-webdriver/elements/frame.rb:127:in
 `switch!'
        from 
C:/Ruby200/lib/ruby/gems/2.0.0/gems/watir-webdriver-0.6.4/lib/watir-webdriver/elements/frame.rb:119:in
 `method_missing'
        from 
C:/Ruby200/lib/ruby/gems/2.0.0/gems/watir-webdriver-0.6.4/lib/watir-webdriver/locators/element_locator.rb:85:in
 `find_first_by_multiple'
        from 
C:/Ruby200/lib/ruby/gems/2.0.0/gems/watir-webdriver-0.6.4/lib/watir-webdriver/locators/element_locator.rb:32:in
 `locate'
        from 
C:/Ruby200/lib/ruby/gems/2.0.0/gems/watir-webdriver-0.6.4/lib/watir-webdriver/elements/button.rb:55:in
 `locate'
        from 
C:/Ruby200/lib/ruby/gems/2.0.0/gems/watir-webdriver-0.6.4/lib/watir-webdriver/elements/element.rb:487:in
 `assert_exists'
        from 
C:/Ruby200/lib/ruby/gems/2.0.0/gems/watir-webdriver-0.6.4/lib/watir-webdriver/elements/element.rb:43:in
 `exists?'
        from 1.rb:9:in `<main>'
true

I tried to alter the element.rb from :
\Ruby200\lib\ruby\gems\2.0.0\gems\watir-webdriver-0.6.4\lib\watir-webdriver\elements

i added "rescue" and  “false” 
like this:(on line 570)
   def locate
      @parent.assert_exists
      locator_class.new(@parent.wd, @selector, self.class.attribute_list).locate
      rescue
      false
    end

and then , when I used
puts b.frame(:id,'CalFrame_DPD').div(:id,'iamnotexist').exist?
it can return false, but it didn't work when I use " button().exist? " 
why ?

thanks again , dear friend.

---
Reply to this email directly or view it on GitHub:
https://github.com/watir/watir-webdriver/issues/211#issuecomment-21255389
_______________________________________________
Wtr-development mailing list
[email protected]
http://rubyforge.org/mailman/listinfo/wtr-development

Reply via email to