Closed
Bug 1499360
Opened 6 years ago
Closed 6 years ago
WebDriver:ElementClick unable to click 1x1 px element
Categories
(Remote Protocol :: Marionette, enhancement, P1)
Remote Protocol
Marionette
Tracking
(firefox65 fixed)
RESOLVED
FIXED
mozilla65
Tracking | Status | |
---|---|---|
firefox65 | --- | fixed |
People
(Reporter: ato, Assigned: ato)
References
(Blocks 1 open bug, )
Details
Attachments
(3 files)
See description and reproducible test case in https://github.com/mozilla/geckodriver/issues/1402 This could also be a specification problem.
Assignee | ||
Updated•6 years ago
|
Assignee | ||
Comment 1•6 years ago
|
||
I did some investigation into this and it looks like a rounding error in the specification. When the element has an odd shape that can’t be divided in two without a precision point, it fails to ceil the centre point to the nearest integer. For example, given a 1x1 rectangle the centre point would be at (0.5,0.5). The click synthesise code will accept this input and pass it on to the event queue without question, but since it is not a valid pixel it ceils the coordinates and instead clicks (0,0). Conversely, if the rectangle is 9x9 where the centre point is (4.5,4.5) it will click (5,5).
Comment 2•6 years ago
|
||
That reminds me at https://stackoverflow.com/questions/10825926/python-3-x-rounding-behavior whereby this is Javascript.
Assignee | ||
Comment 3•6 years ago
|
||
(In reply to Henrik Skupin (:whimboo) from comment #2) > That reminds me at > https://stackoverflow.com/questions/10825926/python-3-x-rounding-behavior > whereby this is Javascript. I’m glad you told me about that because I was just writing a (Python) WPT test case that ran into this problem. Using the math to call out which way to round seems to work fine though.
Assignee | ||
Updated•6 years ago
|
Assignee: nobody → ato
Status: NEW → ASSIGNED
Priority: P2 → P1
Assignee | ||
Comment 4•6 years ago
|
||
When the in-view centre point contains a floating point, we need to ensure to convert it to CSS pixels before passing it on to Gecko internals such as DOMElement.elementsFromPoint and DOMWindowUtils.sendMouseEvent. For example, with a click target that is a 1x1 square, the in-view centre point prior to this patch was calculated to (0.5,0.5). elementsFromPoint will (correctly?) round this coordinate down and return the paint tree for the DOM element at (0,0) coordinates. By contrast, sendMouseEvent will click coordinates (1,1) because it rounds up. To make sure we all speak the same language internally, we round the centre point down.
Assignee | ||
Comment 5•6 years ago
|
||
These tests are not exhaustive, but covers some of the main use cases and known edge cases. Depends on D8880
Assignee | ||
Comment 6•6 years ago
|
||
Depends on D8881
Pushed by atolfsen@mozilla.com: https://hg.mozilla.org/integration/autoland/rev/ae99f2ef9464 marionette: convert in-view centre point to css pixels; r=whimboo https://hg.mozilla.org/integration/autoland/rev/d51f52d435da webdriver: write in-view centre point tests; r=whimboo https://hg.mozilla.org/integration/autoland/rev/6afa28099f1e webdriver: add interactability test for zero-sized element; r=whimboo
Created web-platform-tests PR https://github.com/web-platform-tests/wpt/pull/13655 for changes under testing/web-platform/tests
Comment 9•6 years ago
|
||
bugherder |
https://hg.mozilla.org/mozilla-central/rev/ae99f2ef9464 https://hg.mozilla.org/mozilla-central/rev/d51f52d435da https://hg.mozilla.org/mozilla-central/rev/6afa28099f1e
Status: ASSIGNED → RESOLVED
Closed: 6 years ago
status-firefox65:
--- → fixed
Resolution: --- → FIXED
Target Milestone: --- → mozilla65
Upstream PR merged
Updated•1 year ago
|
Product: Testing → Remote Protocol
You need to log in
before you can comment on or make changes to this bug.
Description
•