Closed Bug 976145 Opened 12 years ago Closed 9 years ago

Impossible to tell which element is Stale when chaining find_element.

Categories

(Remote Protocol :: Marionette, defect)

x86_64
Linux
defect
Not set
normal

Tracking

(Not tracked)

RESOLVED INCOMPLETE

People

(Reporter: zcampbell, Unassigned)

References

Details

If find_element('id', 'foo').find_element('id', 'bar') raises a StaleElementReferenceException The failure message is: StaleElementException: StaleElementException: Stale element reference which is the same thing 3 times over. It's impossible to tell which element was stale.
Entire trace, for your curiosity: test_clock_create_new_alarm (test_clock_create_new_alarm.TestClockCreateNewAlarm) Add an alarm and set label of the new alarm ... ERROR ====================================================================== ERROR: None ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/travis/build/mozilla-b2g/gaia/travis_venv/local/lib/python2.7/site-packages/marionette_client-0.7.3-py2.7.egg/marionette/marionette_test.py", line 143, in run testMethod() File "/home/travis/build/mozilla-b2g/gaia/tests/python/gaia-ui-tests/gaiatest/tests/functional/clock/test_clock_create_new_alarm.py", line 69, in test_clock_create_new_alarm self.clock.alarms[0].wait_for_checkbox_to_change_state(False) File "/home/travis/build/mozilla-b2g/gaia/tests/python/gaia-ui-tests/gaiatest/apps/clock/app.py", line 101, in wait_for_checkbox_to_change_state self.wait_for_condition(lambda m: self.is_alarm_active == value) File "/home/travis/build/mozilla-b2g/gaia/tests/python/gaia-ui-tests/gaiatest/apps/base.py", line 50, in wait_for_condition Wait(self.marionette, timeout).until(method, message=message) File "/home/travis/build/mozilla-b2g/gaia/travis_venv/local/lib/python2.7/site-packages/marionette_client-0.7.3-py2.7.egg/marionette/wait.py", line 122, in until rv = condition(self.marionette) File "/home/travis/build/mozilla-b2g/gaia/tests/python/gaia-ui-tests/gaiatest/apps/clock/app.py", line 101, in <lambda> self.wait_for_condition(lambda m: self.is_alarm_active == value) File "/home/travis/build/mozilla-b2g/gaia/tests/python/gaia-ui-tests/gaiatest/apps/clock/app.py", line 95, in is_alarm_active return self.root_element.find_element(*self._check_box_locator).is_selected() File "/home/travis/build/mozilla-b2g/gaia/travis_venv/local/lib/python2.7/site-packages/marionette_client-0.7.3-py2.7.egg/marionette/marionette.py", line 121, in is_selected return self.marionette._send_message('isElementSelected', 'value', id=self.id) File "/home/travis/build/mozilla-b2g/gaia/travis_venv/local/lib/python2.7/site-packages/marionette_client-0.7.3-py2.7.egg/marionette/marionette.py", line 605, in _send_message self._handle_error(response) File "/home/travis/build/mozilla-b2g/gaia/travis_venv/local/lib/python2.7/site-packages/marionette_client-0.7.3-py2.7.egg/marionette/marionette.py", line 630, in _handle_error raise StaleElementException(message=message, status=status, stacktrace=stacktrace) StaleElementException: StaleElementException: Stale element reference TEST-UNEXPECTED-FAIL | test_clock_create_new_alarm.py test_clock_create_new_alarm.TestClockCreateNewAlarm.test_clock_create_new_alarm | ---------------------------------------------------------------------- Ran 1 test in 26.970s
Currently WebDriver doesnt do this either. see (selenium)☁ javascript [master] python Python 2.7.2 (default, Oct 11 2012, 20:14:37) [GCC 4.2.1 Compatible Apple Clang 4.0 (tags/Apple/clang-418.0.60)] on darwin Type "help", "copyright", "credits" or "license" for more information. >>> from selenium import webdriver f>>> f=webdriver.Firefox() >>> f.get('http://google.com') >>> q = f.find_element('name', 'q') >>> f.refresh() >>> q.send_keys('foo') Traceback (most recent call last): File "<stdin>", line 1, in <module> File "/Users/dburns/.virtualenvs/selenium/lib/python2.7/site-packages/selenium/webdriver/remote/webelement.py", line 292, in send_keys self._execute(Command.SEND_KEYS_TO_ELEMENT, {'value': typing}) File "/Users/dburns/.virtualenvs/selenium/lib/python2.7/site-packages/selenium/webdriver/remote/webelement.py", line 369, in _execute return self._parent.execute(command, params) File "/Users/dburns/.virtualenvs/selenium/lib/python2.7/site-packages/selenium/webdriver/remote/webdriver.py", line 164, in execute self.error_handler.check_response(response) File "/Users/dburns/.virtualenvs/selenium/lib/python2.7/site-packages/selenium/webdriver/remote/errorhandler.py", line 164, in check_response raise exception_class(message, screen, stacktrace) selenium.common.exceptions.StaleElementReferenceException: Message: u'Element not found in the cache - perhaps the page has changed since it was looked up' ; Stacktrace: at fxdriver.cache.getElementAt (resource://fxdriver/modules/web_element_cache.js:7584) at Utils.getElementAt (file:///var/folders/8m/mhq2tccd2g3c850hwmbbbkt00000gn/T/tmpnrGkfM/extensions/fxdriver@googlecode.com/components/command_processor.js:7197) at fxdriver.preconditions.visible (file:///var/folders/8m/mhq2tccd2g3c850hwmbbbkt00000gn/T/tmpnrGkfM/extensions/fxdriver@googlecode.com/components/command_processor.js:8177) at DelayedCommand.prototype.checkPreconditions_ (file:///var/folders/8m/mhq2tccd2g3c850hwmbbbkt00000gn/T/tmpnrGkfM/extensions/fxdriver@googlecode.com/components/command_processor.js:10814) at DelayedCommand.prototype.executeInternal_/h (file:///var/folders/8m/mhq2tccd2g3c850hwmbbbkt00000gn/T/tmpnrGkfM/extensions/fxdriver@googlecode.com/components/command_processor.js:10831) at DelayedCommand.prototype.executeInternal_ (file:///var/folders/8m/mhq2tccd2g3c850hwmbbbkt00000gn/T/tmpnrGkfM/extensions/fxdriver@googlecode.com/components/command_processor.js:10836) at DelayedCommand.prototype.execute/< (file:///var/folders/8m/mhq2tccd2g3c850hwmbbbkt00000gn/T/tmpnrGkfM/extensions/fxdriver@googlecode.com/components/command_processor.js:10778) >>>
raise exception_class(message, screen, stacktrace) selenium.common.exceptions.StaleElementReferenceException: Message: u'Element not found in the cache - perhaps the page has changed since it was looked up' ; Stacktrace: at fxdriver.cache.getElementAt (resource://fxdriver/modules/web_element_cache.js:7584) at Utils.getElementAt (file:///var/folders/8m/mhq2tccd2g3c850hwmbbbkt00000gn/T/tmpnrGkfM/extensions/fxdriver@googlecode.com/components/command_processor.js:7197) at fxdriver.preconditions.visible (file:///var/folders/8m/mhq2tccd2g3c850hwmbbbkt00000gn/T/tmpnrGkfM/extensions/fxdriver@googlecode.com/components/command_processor.js:8177) at DelayedCommand.prototype.checkPreconditions_ (file:///var/folders/8m/mhq2tccd2g3c850hwmbbbkt00000gn/T/tmpnrGkfM/extensions/fxdriver@googlecode.com/components/command_processor.js:10814) at DelayedCommand.prototype.executeInternal_/h (file:///var/folders/8m/mhq2tccd2g3c850hwmbbbkt00000gn/T/tmpnrGkfM/extensions/fxdriver@googlecode.com/components/command_processor.js:10831) at DelayedCommand.prototype.executeInternal_ (file:///var/folders/8m/mhq2tccd2g3c850hwmbbbkt00000gn/T/tmpnrGkfM/extensions/fxdriver@googlecode.com/components/command_processor.js:10836) at DelayedCommand.prototype.execute/< (file:///var/folders/8m/mhq2tccd2g3c850hwmbbbkt00000gn/T/tmpnrGkfM/extensions/fxdriver@googlecode.com/components/command_processor.js:10778) Is the interesting part
Depends on: 989370
[Mass closure] Closing as these features are no longer needed or wanted
Status: NEW → RESOLVED
Closed: 9 years ago
Resolution: --- → INCOMPLETE
Product: Testing → Remote Protocol
You need to log in before you can comment on or make changes to this bug.