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)
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.
| Reporter | ||
Comment 1•12 years ago
|
||
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
Comment 2•12 years ago
|
||
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)
>>>
Comment 3•12 years ago
|
||
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
Comment 4•12 years ago
|
||
Comment 5•9 years ago
|
||
[Mass closure] Closing as these features are no longer needed or wanted
Status: NEW → RESOLVED
Closed: 9 years ago
Resolution: --- → INCOMPLETE
Updated•3 years ago
|
Product: Testing → Remote Protocol
You need to log in
before you can comment on or make changes to this bug.
Description
•