From bf869a011274ee1478cf7d0c3148c7806541195d Mon Sep 17 00:00:00 2001 From: vamsi Date: Sat, 11 Apr 2026 12:52:04 -0400 Subject: [PATCH 1/5] Add Drag And Drop To Frame keyword Updated implementation and tests --- .../keywords/draganddropframe.robot | 48 ++++++++++ atest/resources/html/frames/draganddrop.html | 95 +++++++++++++++++++ src/SeleniumLibrary/keywords/element.py | 39 +++++++- utest/test/api/test_plugins.py | 2 +- 4 files changed, 182 insertions(+), 2 deletions(-) create mode 100644 atest/acceptance/keywords/draganddropframe.robot create mode 100644 atest/resources/html/frames/draganddrop.html diff --git a/atest/acceptance/keywords/draganddropframe.robot b/atest/acceptance/keywords/draganddropframe.robot new file mode 100644 index 000000000..c80480671 --- /dev/null +++ b/atest/acceptance/keywords/draganddropframe.robot @@ -0,0 +1,48 @@ +*** Settings *** +Documentation Tests for the custom Drag And Drop To Frame keyword +... in cross-frame drag-and-drop scenarios. +Test Setup Open Test Browser +Test Teardown Close Browser +Resource ../resource.robot +Force Tags draganddrop + +*** Keywords *** +Open Test Browser + Open Browser ${ROOT}/frames/draganddrop.html ${BROWSER} + Maximize Browser Window + Wait Until Page Contains Element id=source timeout=10s + +*** Test Cases *** +Drag And Drop To Frame Works With Local HTML + [Documentation] Verifies successful cross-frame drag-and-drop from default content to a target inside an iframe. + Drag And Drop To Frame id=source id=target id=previewFrame + Select Frame id=previewFrame + Element Should Contain id=target Dropped Successfully! + Unselect Frame + +Drag And Drop To Frame Returns To Default Content + [Documentation] Verifies that the keyword returns to default content after execution. + Drag And Drop To Frame id=source id=target id=previewFrame + Element Should Be Visible id=previewFrame + +Drag And Drop To Frame Hides Source Element + [Documentation] Verifies that the source element becomes hidden after a successful drop. + Drag And Drop To Frame id=source id=target id=previewFrame + Element Should Not Be Visible id=source + +Standard Drag And Drop Fails When Target Is Inside Frame + [Documentation] Verifies that the standard Drag And Drop keyword cannot complete this cross-frame scenario. + Run Keyword And Expect Error * Drag And Drop id=source id=target + Select Frame id=previewFrame + Element Should Not Contain id=target Dropped Successfully! + Unselect Frame + +Drag And Drop To Frame Fails With Invalid Frame + [Documentation] Verifies that the keyword fails when the frame locator is invalid. + Run Keyword And Expect Error * Drag And Drop To Frame + ... id=source id=target id=missingFrame + +Drag And Drop To Frame Fails With Invalid Target + [Documentation] Verifies that the keyword fails when the target element is not found inside the iframe. + Run Keyword And Expect Error * Drag And Drop To Frame + ... id=source id=missingTarget id=previewFrame \ No newline at end of file diff --git a/atest/resources/html/frames/draganddrop.html b/atest/resources/html/frames/draganddrop.html new file mode 100644 index 000000000..b3aeb0520 --- /dev/null +++ b/atest/resources/html/frames/draganddrop.html @@ -0,0 +1,95 @@ + + + + + Custom Mouse-Based Cross-Frame Drag Test (Fixed with Overlay) + + + + +

Click & hold blue box (outside), drag ANYWHERE (including into green area inside iframe), release → drops!

+ + +
Drag Me!
(outside iframe)
+ + +
+ +
+
+ + + + + \ No newline at end of file diff --git a/src/SeleniumLibrary/keywords/element.py b/src/SeleniumLibrary/keywords/element.py index c61076286..101b7ecdc 100644 --- a/src/SeleniumLibrary/keywords/element.py +++ b/src/SeleniumLibrary/keywords/element.py @@ -1293,4 +1293,41 @@ def get_css_property_value( | ${color}= | `Get CSS Property Value` | css:button.submit | background-color | | ${size}= | `Get CSS Property Value` | id:username | font-size | """ - return self.find_element(locator).value_of_css_property(css_property) \ No newline at end of file + return self.find_element(locator).value_of_css_property(css_property) + + @keyword('Drag And Drop To Frame') + def drag_and_drop_to_frame( + self, locator: Locator, target: Locator, frame: Locator, + ) -> None: + """ + Drags the element identified by ``locator`` from default content and drops it onto + the ``target`` element inside the specified iframe. + + The ``locator`` argument is the locator of the dragged element in default content, + the ``target`` is the locator of the drop target inside the iframe, and the + ``frame`` is the locator of the iframe containing the target. + + See the `Locating elements` section for details about the locator syntax. + + This keyword is designed for cross-frame drag-and-drop scenarios where the standard + `Drag And Drop` keyword fails because it cannot switch contexts mid-action. + + Example: + | Drag And Drop To Frame | css:div#draggable | css:div.drop-target | id:my-iframe | + + Note: This assumes the source is in the default content and the target is inside + the iframe. + """ + source_element = self.find_element(locator) + action = ActionChains(self.driver, duration=self.ctx.action_chain_delay) + action.click_and_hold(source_element).perform() + + try: + frame_element = self.find_element(frame) + self.driver.switch_to.frame(frame_element) + target_element = self.find_element(target) + + action = ActionChains(self.driver, duration=self.ctx.action_chain_delay) + action.move_to_element(target_element).release().perform() + finally: + self.driver.switch_to.default_content() \ No newline at end of file diff --git a/utest/test/api/test_plugins.py b/utest/test/api/test_plugins.py index 16f5bd154..487cf5cdc 100644 --- a/utest/test/api/test_plugins.py +++ b/utest/test/api/test_plugins.py @@ -22,7 +22,7 @@ def setUpClass(cls): def test_no_libraries(self): for item in [None, "None", ""]: sl = SeleniumLibrary(plugins=item) - self.assertEqual(len(sl.get_keyword_names()), 183) + self.assertEqual(len(sl.get_keyword_names()), 184) def test_parse_library(self): plugin = "path.to.MyLibrary" From fb7faa4ccdb6ca2740e9788ad841cf1d041654bd Mon Sep 17 00:00:00 2001 From: vamsi Date: Sat, 11 Apr 2026 13:21:46 -0400 Subject: [PATCH 2/5] Fix acceptance tests for CI run - Drag And Drop To Frame keyword --- .../keywords/draganddropframe.robot | 23 +++++++++---------- 1 file changed, 11 insertions(+), 12 deletions(-) diff --git a/atest/acceptance/keywords/draganddropframe.robot b/atest/acceptance/keywords/draganddropframe.robot index c80480671..e18e40300 100644 --- a/atest/acceptance/keywords/draganddropframe.robot +++ b/atest/acceptance/keywords/draganddropframe.robot @@ -1,20 +1,14 @@ *** Settings *** -Documentation Tests for the custom Drag And Drop To Frame keyword -... in cross-frame drag-and-drop scenarios. -Test Setup Open Test Browser -Test Teardown Close Browser -Resource ../resource.robot -Force Tags draganddrop - -*** Keywords *** -Open Test Browser - Open Browser ${ROOT}/frames/draganddrop.html ${BROWSER} - Maximize Browser Window - Wait Until Page Contains Element id=source timeout=10s +Documentation Tests for the custom Drag And Drop To Frame keyword +... in cross-frame drag-and-drop scenarios. +Resource ../resource.robot +Test Setup Go To Page "frames/draganddrop.html" +Force Tags draganddrop *** Test Cases *** Drag And Drop To Frame Works With Local HTML [Documentation] Verifies successful cross-frame drag-and-drop from default content to a target inside an iframe. + Wait Until Page Contains Element id=source timeout=10s Drag And Drop To Frame id=source id=target id=previewFrame Select Frame id=previewFrame Element Should Contain id=target Dropped Successfully! @@ -22,16 +16,19 @@ Drag And Drop To Frame Works With Local HTML Drag And Drop To Frame Returns To Default Content [Documentation] Verifies that the keyword returns to default content after execution. + Wait Until Page Contains Element id=source timeout=10s Drag And Drop To Frame id=source id=target id=previewFrame Element Should Be Visible id=previewFrame Drag And Drop To Frame Hides Source Element [Documentation] Verifies that the source element becomes hidden after a successful drop. + Wait Until Page Contains Element id=source timeout=10s Drag And Drop To Frame id=source id=target id=previewFrame Element Should Not Be Visible id=source Standard Drag And Drop Fails When Target Is Inside Frame [Documentation] Verifies that the standard Drag And Drop keyword cannot complete this cross-frame scenario. + Wait Until Page Contains Element id=source timeout=10s Run Keyword And Expect Error * Drag And Drop id=source id=target Select Frame id=previewFrame Element Should Not Contain id=target Dropped Successfully! @@ -39,10 +36,12 @@ Standard Drag And Drop Fails When Target Is Inside Frame Drag And Drop To Frame Fails With Invalid Frame [Documentation] Verifies that the keyword fails when the frame locator is invalid. + Wait Until Page Contains Element id=source timeout=10s Run Keyword And Expect Error * Drag And Drop To Frame ... id=source id=target id=missingFrame Drag And Drop To Frame Fails With Invalid Target [Documentation] Verifies that the keyword fails when the target element is not found inside the iframe. + Wait Until Page Contains Element id=source timeout=10s Run Keyword And Expect Error * Drag And Drop To Frame ... id=source id=missingTarget id=previewFrame \ No newline at end of file From 3f6871dc73b91bb2a09b515371ec7760806612b1 Mon Sep 17 00:00:00 2001 From: vamsi Date: Sat, 25 Apr 2026 20:37:07 -0400 Subject: [PATCH 3/5] Improve cross-frame drag and drop reliability and tests --- .../keywords/draganddropframe.robot | 100 ++++-- atest/resources/html/frames/draganddrop.html | 324 +++++++++++++----- src/SeleniumLibrary/keywords/element.py | 64 ++-- 3 files changed, 357 insertions(+), 131 deletions(-) diff --git a/atest/acceptance/keywords/draganddropframe.robot b/atest/acceptance/keywords/draganddropframe.robot index e18e40300..b94c21dfe 100644 --- a/atest/acceptance/keywords/draganddropframe.robot +++ b/atest/acceptance/keywords/draganddropframe.robot @@ -1,47 +1,87 @@ *** Settings *** -Documentation Tests for the custom Drag And Drop To Frame keyword +Documentation Tests for the custom Drag And Drop Across Frames keyword ... in cross-frame drag-and-drop scenarios. Resource ../resource.robot Test Setup Go To Page "frames/draganddrop.html" -Force Tags draganddrop *** Test Cases *** -Drag And Drop To Frame Works With Local HTML - [Documentation] Verifies successful cross-frame drag-and-drop from default content to a target inside an iframe. - Wait Until Page Contains Element id=source timeout=10s - Drag And Drop To Frame id=source id=target id=previewFrame - Select Frame id=previewFrame +Drag And Drop Across Frames Works From Default Content + [Documentation] Verifies drag-and-drop from default content to a target inside an iframe. + Wait Until Page Contains Element id=defaultSource 10s + Drag And Drop Across Frames id=defaultSource id=target id=targetFrame + Select Frame id=targetFrame Element Should Contain id=target Dropped Successfully! Unselect Frame -Drag And Drop To Frame Returns To Default Content +Drag And Drop Across Frames Works From Source Frame + [Documentation] Verifies drag-and-drop from a source iframe to a target iframe. + Wait Until Page Contains Element id=sourceFrame 10s + Select Frame id=sourceFrame + Wait Until Page Contains Element id=frameSource 10s + Unselect Frame + Drag And Drop Across Frames id=frameSource id=target id=targetFrame id=sourceFrame + Select Frame id=targetFrame + Element Should Contain id=target Dropped Successfully! + Unselect Frame + +Drag And Drop Across Frames Returns To Default Content [Documentation] Verifies that the keyword returns to default content after execution. - Wait Until Page Contains Element id=source timeout=10s - Drag And Drop To Frame id=source id=target id=previewFrame - Element Should Be Visible id=previewFrame + Wait Until Page Contains Element id=defaultSource 10s + Drag And Drop Across Frames id=defaultSource id=target id=targetFrame + Element Should Be Visible id=targetFrame -Drag And Drop To Frame Hides Source Element - [Documentation] Verifies that the source element becomes hidden after a successful drop. - Wait Until Page Contains Element id=source timeout=10s - Drag And Drop To Frame id=source id=target id=previewFrame - Element Should Not Be Visible id=source +Drag And Drop Across Frames Hides Default Source Element + [Documentation] Verifies that the default source element becomes hidden after a successful drop. + Wait Until Page Contains Element id=defaultSource 10s + Drag And Drop Across Frames id=defaultSource id=target id=targetFrame + Element Should Not Be Visible id=defaultSource + +Drag And Drop Across Frames Hides Frame Source Element + [Documentation] Verifies that the frame source element becomes hidden after a successful drop. + Wait Until Page Contains Element id=sourceFrame 10s + Drag And Drop Across Frames id=frameSource id=target id=targetFrame id=sourceFrame + Select Frame id=sourceFrame + Element Should Not Be Visible id=frameSource + Unselect Frame Standard Drag And Drop Fails When Target Is Inside Frame [Documentation] Verifies that the standard Drag And Drop keyword cannot complete this cross-frame scenario. - Wait Until Page Contains Element id=source timeout=10s - Run Keyword And Expect Error * Drag And Drop id=source id=target - Select Frame id=previewFrame + Wait Until Page Contains Element id=defaultSource 10s + Run Keyword And Expect Error + ... Element with locator 'id=target' not found. + ... Drag And Drop id=defaultSource id=target + Select Frame id=targetFrame Element Should Not Contain id=target Dropped Successfully! Unselect Frame -Drag And Drop To Frame Fails With Invalid Frame - [Documentation] Verifies that the keyword fails when the frame locator is invalid. - Wait Until Page Contains Element id=source timeout=10s - Run Keyword And Expect Error * Drag And Drop To Frame - ... id=source id=target id=missingFrame - -Drag And Drop To Frame Fails With Invalid Target - [Documentation] Verifies that the keyword fails when the target element is not found inside the iframe. - Wait Until Page Contains Element id=source timeout=10s - Run Keyword And Expect Error * Drag And Drop To Frame - ... id=source id=missingTarget id=previewFrame \ No newline at end of file +Drag And Drop Across Frames Fails With Invalid Target Frame + [Documentation] Verifies that the keyword fails when the target frame locator is invalid. + Wait Until Page Contains Element id=defaultSource 10s + Run Keyword And Expect Error + ... Element with locator 'id=missingFrame' not found. + ... Drag And Drop Across Frames + ... id=defaultSource id=target id=missingFrame + +Drag And Drop Across Frames Fails With Invalid Target + [Documentation] Verifies that the keyword fails when the target element is not found inside the target iframe. + Wait Until Page Contains Element id=defaultSource 10s + Run Keyword And Expect Error + ... Element with locator 'id=missingTarget' not found. + ... Drag And Drop Across Frames + ... id=defaultSource id=missingTarget id=targetFrame + +Drag And Drop Across Frames Fails With Invalid Source Frame + [Documentation] Verifies that the keyword fails when the source frame locator is invalid. + Wait Until Page Contains Element id=defaultSource 10s + Run Keyword And Expect Error + ... Element with locator 'id=missingSourceFrame' not found. + ... Drag And Drop Across Frames + ... id=frameSource id=target id=targetFrame id=missingSourceFrame + +Drag And Drop Across Frames Fails With Invalid Source + [Documentation] Verifies that the keyword fails when the source element is not found. + Wait Until Page Contains Element id=defaultSource 10s + Run Keyword And Expect Error + ... Element with locator 'id=missingSource' not found. + ... Drag And Drop Across Frames + ... id=missingSource id=target id=targetFrame \ No newline at end of file diff --git a/atest/resources/html/frames/draganddrop.html b/atest/resources/html/frames/draganddrop.html index b3aeb0520..0d8736b2b 100644 --- a/atest/resources/html/frames/draganddrop.html +++ b/atest/resources/html/frames/draganddrop.html @@ -2,94 +2,262 @@ - Custom Mouse-Based Cross-Frame Drag Test (Fixed with Overlay) + Drag And Drop Across Frames Test Page -

Click & hold blue box (outside), drag ANYWHERE (including into green area inside iframe), release → drops!

- - -
Drag Me!
(outside iframe)
- - -
- -
-
- - + sourceDoc.addEventListener("mousemove", function (event) { + if (!dragging) return; + + const rect = sourceFrame.getBoundingClientRect(); + moveGhost(rect.left + event.clientX, rect.top + event.clientY); + }); + + sourceDoc.addEventListener("mouseup", function (event) { + if (!dragging) return; + + const rect = sourceFrame.getBoundingClientRect(); + finishDrag(rect.left + event.clientX, rect.top + event.clientY); + }); + + targetDoc.addEventListener("mousemove", function (event) { + if (!dragging) return; + + const rect = targetFrame.getBoundingClientRect(); + moveGhost(rect.left + event.clientX, rect.top + event.clientY); + }); + + targetDoc.addEventListener("mouseup", function (event) { + if (!dragging) return; + + const rect = targetFrame.getBoundingClientRect(); + finishDrag(rect.left + event.clientX, rect.top + event.clientY); + }); + }; + + function startDrag(source, x, y) { + dragging = true; + activeSource = source; + + dragGhost.innerText = source === "default" ? "Default Source" : "Frame Source"; + dragGhost.style.display = "block"; + + moveGhost(x, y); + } + + function moveGhost(x, y) { + dragGhost.style.left = (x - 75) + "px"; + dragGhost.style.top = (y - 75) + "px"; + } + + function finishDrag(x, y) { + if (isInsideTarget(x, y)) { + completeDrop(); + } else { + resetDrag(); + } + } + + function isInsideTarget(x, y) { + const target = targetFrame.contentDocument.getElementById("target"); + const frameRect = targetFrame.getBoundingClientRect(); + const targetRect = target.getBoundingClientRect(); + + const globalLeft = frameRect.left + targetRect.left; + const globalTop = frameRect.top + targetRect.top; + const globalRight = globalLeft + targetRect.width; + const globalBottom = globalTop + targetRect.height; + + return ( + x >= globalLeft && + x <= globalRight && + y >= globalTop && + y <= globalBottom + ); + } + + function completeDrop() { + if (activeSource === "default") { + defaultSource.style.display = "none"; + } + + if (activeSource === "frame") { + const frameSource = sourceFrame.contentDocument.getElementById("frameSource"); + frameSource.style.display = "none"; + } + + const target = targetFrame.contentDocument.getElementById("target"); + target.innerText = "Dropped Successfully!"; + + status.innerText = "Dropped Successfully!"; + resetDrag(); + } + + function resetDrag() { + dragging = false; + activeSource = null; + dragGhost.style.display = "none"; + } + \ No newline at end of file diff --git a/src/SeleniumLibrary/keywords/element.py b/src/SeleniumLibrary/keywords/element.py index 101b7ecdc..aaacd2156 100644 --- a/src/SeleniumLibrary/keywords/element.py +++ b/src/SeleniumLibrary/keywords/element.py @@ -1295,39 +1295,57 @@ def get_css_property_value( """ return self.find_element(locator).value_of_css_property(css_property) - @keyword('Drag And Drop To Frame') - def drag_and_drop_to_frame( - self, locator: Locator, target: Locator, frame: Locator, + from typing import Optional + + @keyword("Drag And Drop Across Frames") + def drag_and_drop_across_frames( + self, + locator: Locator, + target: Locator, + target_frame: Locator, + source_frame: Optional[Locator] = None, ) -> None: """ - Drags the element identified by ``locator`` from default content and drops it onto - the ``target`` element inside the specified iframe. + Drags an element and drops it onto a target element across frame boundaries. - The ``locator`` argument is the locator of the dragged element in default content, - the ``target`` is the locator of the drop target inside the iframe, and the - ``frame`` is the locator of the iframe containing the target. + The ``locator`` argument is the locator of the element to drag. The ``target`` + argument is the locator of the drop target. The ``target_frame`` argument is + the locator of the iframe containing the target. The optional ``source_frame`` + argument is the locator of the iframe containing the source. If + ``source_frame`` is not provided, the source element is located in the default content. See the `Locating elements` section for details about the locator syntax. - This keyword is designed for cross-frame drag-and-drop scenarios where the standard - `Drag And Drop` keyword fails because it cannot switch contexts mid-action. - - Example: - | Drag And Drop To Frame | css:div#draggable | css:div.drop-target | id:my-iframe | - - Note: This assumes the source is in the default content and the target is inside - the iframe. + Examples: + | Drag And Drop Across Frames | id:source | id:target | id:target-frame | + | Drag And Drop Across Frames | id:source | id:target | id:target-frame | id:source-frame | """ - source_element = self.find_element(locator) - action = ActionChains(self.driver, duration=self.ctx.action_chain_delay) - action.click_and_hold(source_element).perform() + released = False try: - frame_element = self.find_element(frame) - self.driver.switch_to.frame(frame_element) + if source_frame is not None: + source_frame_element = self.find_element(source_frame) + self.driver.switch_to.frame(source_frame_element) + + source_element = self.find_element(locator) + ActionChains( + self.driver, duration=self.ctx.action_chain_delay + ).click_and_hold(source_element).perform() + + self.driver.switch_to.default_content() + + target_frame_element = self.find_element(target_frame) + self.driver.switch_to.frame(target_frame_element) + target_element = self.find_element(target) + ActionChains( + self.driver, duration=self.ctx.action_chain_delay + ).move_to_element(target_element).release().perform() + released = True - action = ActionChains(self.driver, duration=self.ctx.action_chain_delay) - action.move_to_element(target_element).release().perform() finally: + if not released: + ActionChains( + self.driver, duration=self.ctx.action_chain_delay + ).release().perform() self.driver.switch_to.default_content() \ No newline at end of file From b76a3d9cdfd1b128c1755b095dcf8e5857579b54 Mon Sep 17 00:00:00 2001 From: vamsi Date: Sat, 25 Apr 2026 21:05:18 -0400 Subject: [PATCH 4/5] Update docstring to clarify default content reset after execution --- src/SeleniumLibrary/keywords/element.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/SeleniumLibrary/keywords/element.py b/src/SeleniumLibrary/keywords/element.py index aaacd2156..b3255005d 100644 --- a/src/SeleniumLibrary/keywords/element.py +++ b/src/SeleniumLibrary/keywords/element.py @@ -1314,6 +1314,8 @@ def drag_and_drop_across_frames( argument is the locator of the iframe containing the source. If ``source_frame`` is not provided, the source element is located in the default content. + After this keyword runs, the browser context is always reset to default content. + See the `Locating elements` section for details about the locator syntax. Examples: From 4de91cbb2ded5df6116612c78e066fdbb2ea83d8 Mon Sep 17 00:00:00 2001 From: vamsi Date: Sun, 26 Apr 2026 09:55:27 -0400 Subject: [PATCH 5/5] Simplify test fixture and refine test coverage --- atest/acceptance/keywords/draganddropframe.robot | 12 +----------- atest/resources/html/frames/draganddrop.html | 3 --- 2 files changed, 1 insertion(+), 14 deletions(-) diff --git a/atest/acceptance/keywords/draganddropframe.robot b/atest/acceptance/keywords/draganddropframe.robot index b94c21dfe..32cc14866 100644 --- a/atest/acceptance/keywords/draganddropframe.robot +++ b/atest/acceptance/keywords/draganddropframe.robot @@ -28,7 +28,7 @@ Drag And Drop Across Frames Returns To Default Content [Documentation] Verifies that the keyword returns to default content after execution. Wait Until Page Contains Element id=defaultSource 10s Drag And Drop Across Frames id=defaultSource id=target id=targetFrame - Element Should Be Visible id=targetFrame + Page Should Not Contain Element id=target Drag And Drop Across Frames Hides Default Source Element [Documentation] Verifies that the default source element becomes hidden after a successful drop. @@ -44,16 +44,6 @@ Drag And Drop Across Frames Hides Frame Source Element Element Should Not Be Visible id=frameSource Unselect Frame -Standard Drag And Drop Fails When Target Is Inside Frame - [Documentation] Verifies that the standard Drag And Drop keyword cannot complete this cross-frame scenario. - Wait Until Page Contains Element id=defaultSource 10s - Run Keyword And Expect Error - ... Element with locator 'id=target' not found. - ... Drag And Drop id=defaultSource id=target - Select Frame id=targetFrame - Element Should Not Contain id=target Dropped Successfully! - Unselect Frame - Drag And Drop Across Frames Fails With Invalid Target Frame [Documentation] Verifies that the keyword fails when the target frame locator is invalid. Wait Until Page Contains Element id=defaultSource 10s diff --git a/atest/resources/html/frames/draganddrop.html b/atest/resources/html/frames/draganddrop.html index 0d8736b2b..98421dd5f 100644 --- a/atest/resources/html/frames/draganddrop.html +++ b/atest/resources/html/frames/draganddrop.html @@ -62,14 +62,12 @@

Drag And Drop Across Frames Test Page

-
Not dropped