@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