Comment #8 on issue 7524 by
lorenjoh...@gmail.com: IEDriver: Error
I'm seeing a similar problem with the Python bindings while using explicit
waiting for an element to be visible after loading a page. I only see this
issue with IEdriver and only intermittently.
WebDriverWait(mg.driver, timeout).until(condition)
/Library/Python/2.7/site-packages/selenium/webdriver/support/wait.py:66: in
until
value = method(self._driver)
/Library/Python/2.7/site-packages/selenium/webdriver/support/expected_conditions.py:72:
in
__call__
return _element_if_visible(_find_element(driver, self.locator))
/Library/Python/2.7/site-packages/selenium/webdriver/support/expected_conditions.py:90:
in
_element_if_visible
return element if element.is_displayed() else False
/Library/Python/2.7/site-packages/selenium/webdriver/remote/webelement.py:323:
in
is_displayed
return self._execute(Command.IS_ELEMENT_DISPLAYED)['value']
/Library/Python/2.7/site-packages/selenium/webdriver/remote/webelement.py:402:
in
_execute
return self._parent.execute(command, params)
/Library/Python/2.7/site-packages/selenium/webdriver/remote/webdriver.py:175:
in
execute
self.error_handler.check_response(response)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
_ _
self = <selenium.webdriver.remote.errorhandler.ErrorHandler object at
0x103eacc10>
response = {'class': 'org.openqa.selenium.remote.Response', 'hCode':
9221641, 'sessionId': 'c91e1ef0-5fb8-41e5-97b7-543c80053a67', 'state': 'unhandled
error', ...}
def check_response(self, response):
"""
Checks that a JSON response from the WebDriver does not have an
error.
:Args:
- response - The JSON response from the WebDriver server as a
dictionary
object.
:Raises: If the response contains an error message.
"""
status = response['status']
if status == ErrorCode.SUCCESS:
return
exception_class = ErrorInResponseException
if status in ErrorCode.NO_SUCH_ELEMENT:
exception_class = NoSuchElementException
elif status in ErrorCode.NO_SUCH_FRAME:
exception_class = NoSuchFrameException
elif status in ErrorCode.NO_SUCH_WINDOW:
exception_class = NoSuchWindowException
elif status in ErrorCode.STALE_ELEMENT_REFERENCE:
exception_class = StaleElementReferenceException
elif status in ErrorCode.ELEMENT_NOT_VISIBLE:
exception_class = ElementNotVisibleException
elif status in ErrorCode.INVALID_ELEMENT_STATE:
exception_class = InvalidElementStateException
elif status in ErrorCode.INVALID_SELECTOR \
or status in ErrorCode.INVALID_XPATH_SELECTOR \
or status in ErrorCode.INVALID_XPATH_SELECTOR_RETURN_TYPER:
exception_class = InvalidSelectorException
elif status in ErrorCode.ELEMENT_IS_NOT_SELECTABLE:
exception_class = ElementNotSelectableException
elif status in ErrorCode.INVALID_COOKIE_DOMAIN:
exception_class = WebDriverException
elif status in ErrorCode.UNABLE_TO_SET_COOKIE:
exception_class = WebDriverException
elif status in ErrorCode.TIMEOUT:
exception_class = TimeoutException
elif status in ErrorCode.SCRIPT_TIMEOUT:
exception_class = TimeoutException
elif status in ErrorCode.UNKNOWN_ERROR:
exception_class = WebDriverException
elif status in ErrorCode.UNEXPECTED_ALERT_OPEN:
exception_class = UnexpectedAlertPresentException
elif status in ErrorCode.NO_ALERT_OPEN:
exception_class = NoAlertPresentException
elif status in ErrorCode.IME_NOT_AVAILABLE:
exception_class = ImeNotAvailableException
elif status in ErrorCode.IME_ENGINE_ACTIVATION_FAILED:
exception_class = ImeActivationFailedException
elif status in ErrorCode.MOVE_TARGET_OUT_OF_BOUNDS:
exception_class = MoveTargetOutOfBoundsException
else:
exception_class = WebDriverException
value = response['value']
if isinstance(value, basestring):
if exception_class == ErrorInResponseException:
raise exception_class(response, value)
raise exception_class(value)
message = ''
if 'message' in value:
message = value['message']
screen = None
if 'screen' in value:
screen = value['screen']
stacktrace = None
if 'stackTrace' in value and value['stackTrace']:
stacktrace = []
try:
for frame in value['stackTrace']:
line = self._value_or_default(frame, 'lineNumber', '')
file =
self._value_or_default(frame, 'fileName', '<anonymous>')
if line:
file = "%s:%s" % (file, line)
meth =
self._value_or_default(frame, 'methodName', '<anonymous>')
if 'className' in frame:
meth = "%s.%s" % (frame['className'], meth)
msg = " at %s (%s)"
msg = msg % (meth, file)
stacktrace.append(msg)
except TypeError:
pass
if exception_class == ErrorInResponseException:
raise exception_class(response, message)
elif exception_class == UnexpectedAlertPresentException and 'alert'
in value:
raise exception_class(message, screen, stacktrace,
value['alert'].get('text'))
> raise exception_class(message, screen, stacktrace)
E WebDriverException: Message: Error determining if element is
displayed (WARNING: The server did not provide any stacktrace information)
E Command duration or timeout: 97 milliseconds
E Build info: version: '2.46.0', revision: '87c69e2',
time: '2015-06-04 16:16:47'
E System info: host: 'IE11Win7', ip: '10.1.15.193',
os.name: 'Windows
7', os.arch: 'x86', os.version: '6.1', java.version: '1.8.0_45'
E Driver info: org.openqa.selenium.ie.InternetExplorerDriver
E Capabilities [{browserAttachTimeout=0, enablePersistentHover=false,
ie.forceCreateProcessApi=false, pageLoadStrategy=normal,
ie.usePerProcessProxy=false, ignoreZoomSetting=false, handlesAlerts=true,
version=11, platform=WINDOWS, nativeEvents=true,
ie.ensureCleanSession=false, elementScrollBehavior=0,
ie.browserCommandLineSwitches=, requireWindowFocus=false,
browserName=internet explorer, initialBrowserUrl=
http://localhost:19898/,
takesScreenshot=true, javascriptEnabled=true,
ignoreProtectedModeSettings=false, enableElementCacheCleanup=true,
cssSelectorsEnabled=true, unexpectedAlertBehaviour=dismiss}]
E Session ID: 39e86eb8-a23e-4fce-84ef-ef24bd024268
E Screenshot: available via screen
E Stacktrace:
E at sun.reflect.NativeConstructorAccessorImpl.newInstance0
(None:-2)
E at sun.reflect.NativeConstructorAccessorImpl.newInstance
(None:-1)
E at sun.reflect.DelegatingConstructorAccessorImpl.newInstance
(None:-1)
E at java.lang.reflect.Constructor.newInstance (None:-1)
E at org.openqa.selenium.remote.ErrorHandler.createThrowable
(ErrorHandler.java:204)
E at
org.openqa.selenium.remote.ErrorHandler.throwIfResponseFailed
(ErrorHandler.java:156)
E at org.openqa.selenium.remote.RemoteWebDriver.execute
(RemoteWebDriver.java:605)
E at org.openqa.selenium.remote.RemoteWebElement.execute
(RemoteWebElement.java:269)
E at org.openqa.selenium.remote.RemoteWebElement.isDisplayed
(RemoteWebElement.java:310)
E at sun.reflect.GeneratedMethodAccessor9.invoke (None:-1)
E at sun.reflect.DelegatingMethodAccessorImpl.invoke (None:-1)
E at java.lang.reflect.Method.invoke (None:-1)
E at
org.openqa.selenium.support.events.EventFiringWebDriver$EventFiringWebElement$1.invoke
(EventFiringWebDriver.java:332)
E at com.sun.proxy.$Proxy2.isDisplayed (None:-1)
E at
org.openqa.selenium.support.events.EventFiringWebDriver$EventFiringWebElement.isDisplayed
(EventFiringWebDriver.java:386)
E at sun.reflect.GeneratedMethodAccessor9.invoke (None:-1)
E at sun.reflect.DelegatingMethodAccessorImpl.invoke (None:-1)
E at java.lang.reflect.Method.invoke (None:-1)
E at org.openqa.selenium.remote.server.KnownElements$1.invoke
(KnownElements.java:64)
E at com.sun.proxy.$Proxy3.isDisplayed (None:-1)
E at
org.openqa.selenium.remote.server.handler.GetElementDisplayed.call
(GetElementDisplayed.java:32)
E at
org.openqa.selenium.remote.server.handler.GetElementDisplayed.call
(GetElementDisplayed.java:1)
E at java.util.concurrent.FutureTask.run (None:-1)
E at org.openqa.selenium.remote.server.DefaultSession$1.run
(DefaultSession.java:176)
E at java.util.concurrent.ThreadPoolExecutor.runWorker (None:-1)
E at java.util.concurrent.ThreadPoolExecutor$Worker.run (None:-1)
E at java.lang.Thread.run (None:-1)
/Library/Python/2.7/site-packages/selenium/webdriver/remote/errorhandler.py:166:
WebDriverException