首页 > 解决方案 > Selenium 拖放功能如何在幕后工作?

问题描述

我正在尝试在我的简单 html 网站(保存在文件中)上自动执行拖放功能。如果我手动将图像拖动到拖动框,则拖放功能有效。但是,如果我尝试使用 Python 和 Selenium 复制相同的流程,则图像不会被拖动到目标元素。拖放到底是如何工作的?我的 html 文件中是否缺少某些内容?我确定我的 Selenium 代码是正确的,它适用于其他网站。

source_element = driver.find_element_by_id('image')
target_element = driver.find_element_by_id('drag-box')
ActionChains(driver).drag_and_drop(source_element, target_element).perform()

<head>

    <title>Test Site</title>

    <style>

        #drag-box, #dummy-box {
            width: 300px;
            height: 300px;
            padding: 10px;
            border: 1px solid;
            color: #aaaaaa;
            float: left;
        }

    </style>

    <script>

        function allowDrop(event) {
            event.preventDefault();
        }

        function drag(event) {
            event.dataTransfer.setData("image", event.target.id);
        }

        function drop(event) {
            event.preventDefault();
            var data = event.dataTransfer.getData("image");
            event.target.appendChild(document.getElementById(data));
        }

    </script>

</head>

<body>

    <header class="header-content">

        <h1>Welcome to the site!</h1>

    </header>

    <main class="main-content">

        <img id="image" src="test-image.png" draggable="true" ondragstart="drag(event)">

    </main>

    <div id="dummy-box"></div>
    <div id="drag-box" ondrop="drop(event)" ondragover="allowDrop(event)"></div>

</body>

</html>

该文件在我的浏览器中打开并找到了元素,但是当我执行拖放时没有任何反应。我在 Firefox 和 Chrome 上都试过了。此外,浏览器和网络驱动程序都是最新的。

标签: python-3.xseleniumautomationdrag-and-drop

解决方案


推荐阅读