mozilla / geckodriver

WebDriver for Firefox
https://firefox-source-docs.mozilla.org/testing/geckodriver/
Mozilla Public License 2.0
7.11k stars 1.52k forks source link

TypeError: rect is undefined, when using Selenium Actions and element is not displayed #1269

Open quarckster opened 6 years ago

quarckster commented 6 years ago

System

Testcase

<!DOCTYPE html>
<html>
    <head>
        <title>Demo</title>
    </head>
    <body>
        <p style="display: none;" id="test">Test</p>
    </body>
</html>
from selenium.webdriver.firefox.options import Options
from selenium.webdriver.common.action_chains import ActionChains
from selenium import webdriver

opts = Options()
driver = webdriver.Remote(desired_capabilities=opts.to_capabilities(), command_executor='http://127.0.0.1:4444/wd/hub')
driver.get("test.html")
el = driver.find_element_by_id("test")
move_to = ActionChains(driver).move_to_element(el)
move_to.perform()

Stacktrace

/home/dmisharo/cfme/lib/python2.7/site-packages/selenium/webdriver/common/action_chains.pyc in perform(self)
     78         """
     79         if self._driver.w3c:
---> 80             self.w3c_actions.perform()
     81         else:
     82             for action in self._actions:

/home/dmisharo/cfme/lib/python2.7/site-packages/selenium/webdriver/common/actions/action_builder.pyc in perform(self)
     74             if encoded['actions']:
     75                 enc["actions"].append(encoded)
---> 76         self.driver.execute(Command.W3C_ACTIONS, enc)
     77
     78     def clear_actions(self):

/home/dmisharo/cfme/lib/python2.7/site-packages/selenium/webdriver/remote/webdriver.pyc in execute(self, driver_command, params)
    312         response = self.command_executor.execute(driver_command, params)
    313         if response:
--> 314             self.error_handler.check_response(response)
    315             response['value'] = self._unwrap_value(
    316                 response.get('value', None))

/home/dmisharo/cfme/lib/python2.7/site-packages/selenium/webdriver/remote/errorhandler.pyc in check_response(self, response)
    240                 alert_text = value['alert'].get('text')
    241             raise exception_class(message, screen, stacktrace, alert_text)
--> 242         raise exception_class(message, screen, stacktrace)
    243
    244     def _value_or_default(self, obj, key, default):

WebDriverException: Message: TypeError: rect is undefined

Trace-level log

1526020736802   webdriver::server       DEBUG   -> POST /session/938000dd-b742-4593-9d65-2fa3e1f777f4/element {"using": "css selector", "value": "[id=\"test\"]"}
1526020736803   geckodriver::marionette TRACE   -> 68:[0,4,"findElement",{"using":"css selector","value":"[id=\"test\"]"}]
1526020736804   Marionette      TRACE   0 -> [0,4,"findElement",{"using":"css selector","value":"[id=\"test\"]"}]
1526020736806   Marionette      TRACE   0 <- [1,4,null,{"value":{"element-6066-11e4-a52e-4f735466cecf":"b377e902-42bb-4c17-bc85-f687fb01d930","ELEMENT":"b377e902-42bb-4c17-bc85-f687fb01d930"}}]
1526020736807   geckodriver::marionette TRACE   <- [1,4,null,{"value":{"element-6066-11e4-a52e-4f735466cecf":"b377e902-42bb-4c17-bc85-f687fb01d930","ELEMENT":"b377e902-42bb-4c17-bc85-f687fb01d930"}}]
1526020736807   webdriver::server       DEBUG   <- 200 OK {"value":{"element-6066-11e4-a52e-4f735466cecf":"b377e902-42bb-4c17-bc85-f687fb01d930"}}
1526020763090   webdriver::server       DEBUG   -> POST /session/938000dd-b742-4593-9d65-2fa3e1f777f4/actions {"actions": [{"parameters": {"pointerType": "mouse"}, "type": "pointer", "id": "mouse", "actions": [{"duration": 250, "x": 0, "type": "pointerMove", "y": 0, "origin": {"element-6066-11e4-a52e-4f735466cecf": "b377e902-42bb-4c17-bc85-f687fb01d930"}}]}, {"type": "key", "id": "key", "actions": [{"duration": 0, "type": "pause"}]}]}
1526020763091   geckodriver::marionette TRACE   -> 323:[0,5,"performActions",{"actions":[{"actions":[{"duration":250,"origin":{"element-6066-11e4-a52e-4f735466cecf":"b377e902-42bb-4c17-bc85-f687fb01d930"},"type":"pointerMove","x":0,"y":0}],"id":"mouse","parameters":{"pointerType":"mouse"},"type":"pointer"},{"actions":[{"duration":0,"type":"pause"}],"id":"key","type":"key"}]}]
1526020763092   Marionette      TRACE   0 -> [0,5,"performActions",{"actions":[{"actions":[{"duration":250,"origin":{"element-6066-11e4-a52e-4f735466cecf":"b377e902-42bb- ... "parameters":{"pointerType":"mouse"},"type":"pointer"},{"actions":[{"duration":0,"type":"pause"}],"id":"key","type":"key"}]}]
1526020763100   Marionette      TRACE   0 <- [1,5,{"error":"unknown error","message":"TypeError: rect is undefined","stacktrace":"element.getInViewCentrePoint@chrome://ma ... ch/</req<@chrome://marionette/content/listener.js:491:14\ndispatch/<@chrome://marionette/content/listener.js:484:15\n"},null]
1526020763101   geckodriver::marionette TRACE   <- [1,5,{"error":"unknown error","message":"TypeError: rect is undefined","stacktrace":"element.getInViewCentrePoint@chrome://marionette/content/element.js:1160:5\ngetElementCenter@chrome://marionette/content/action.js:1440:14\ndispatchPointerMove/<@chrome://marionette/content/action.js:1327:18\ndispatchPointerMove@chrome://marionette/content/action.js:1323:10\ntoEvents/<@chrome://marionette/content/action.js:1110:16\naction.dispatchTickActions@chrome://marionette/content/action.js:1020:23\naction.dispatch/chainEvents<@chrome://marionette/content/action.js:989:13\naction.dispatch@chrome://marionette/content/action.js:987:22\nperformActions@chrome://marionette/content/listener.js:786:9\ndispatch/</req<@chrome://marionette/content/listener.js:491:14\ndispatch/<@chrome://marionette/content/listener.js:484:15\n"},null]
1526020763101   webdriver::server       DEBUG   <- 500 Internal Server Error {"value":{"error":"unknown error","message":"TypeError: rect is undefined","stacktrace":"element.getInViewCentrePoint@chrome://marionette/content/element.js:1160:5\ngetElementCenter@chrome://marionette/content/action.js:1440:14\ndispatchPointerMove/<@chrome://marionette/content/action.js:1327:18\ndispatchPointerMove@chrome://marionette/content/action.js:1323:10\ntoEvents/<@chrome://marionette/content/action.js:1110:16\naction.dispatchTickActions@chrome://marionette/content/action.js:1020:23\naction.dispatch/chainEvents<@chrome://marionette/content/action.js:989:13\naction.dispatch@chrome://marionette/content/action.js:987:22\nperformActions@chrome://marionette/content/listener.js:786:9\ndispatch/</req<@chrome://marionette/content/listener.js:491:14\ndispatch/<@chrome://marionette/content/listener.js:484:15\n"}}
whimboo commented 6 years ago

This is actually covered by https://bugzilla.mozilla.org/show_bug.cgi?id=1453779.

paprotti commented 6 years ago

p0deje referenced my issue here. I've tried test my example on older firefox's version (lower than 60). On version 58 it works perfect. May this will help a little

jrett2 commented 4 years ago

This is a major issue for me and my company. This randomly breaks our menu navigation code.

adesai2 commented 4 years ago

Is this issue resolved? I am facing this FireFox 77.0.1 and Geckodriver latest version