如何将元素从外部移动/拖动到 iframe

Hel*_*nds 21 javascript iframe jquery python-2.7 selenium-webdriver

我需要将元素从 iframe 外部移动到 iframe 中。我的元素面板不是 iframe 的一部分,但我的画布在 iframe 中并且想要将元素移入其中。

我试过下面的代码:

 element_source = self._selenium.find_element(By.XPATH,
                                          '//div[@class="gjs-block-label"][contains(.,"Tooltip")]')
    element_target=self._selenium.find_element(By.CLASS_NAME,'gjs-frame')
    actions = ActionChains(self._driver)
    actions.drag_and_drop(element_source, element_target).perform()
    time.sleep(5)
Run Code Online (Sandbox Code Playgroud)

看起来问题是我必须在移动元素之前切换到 iframe,但在这里我看不到这种可能性,因为 drag_and_drop 是组合方法,其中我的 element_source在 iframe 之外,element_target是 iframe 本身。

所以如果我在拖放之前切换,它甚至找不到element_source

这是我正在处理的演示页面:https : //grapesjs.com/demo.html

在上面的演示中,左侧是 iframe,右侧面板是元素的集合。

sto*_*nth 0

我调查了该应用程序,在这种情况下,即使drag_and_drop_by_offset使用 XPATH 也无法帮助我,因为这个已知的 HTML 5 selenium-drag-issue。您需要根据下一个解决方法创建自定义帮助器: https://github.com/andywer/drag-mock,并在当前浏览器上下文中使用 CSS 选择器(目前除了 XPATH 之外,没有一个选择器是稳定的),execute_script如果您愿意的话继续使用 python-selenium 绑定。