python-3.x - 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 上都试过了。此外,浏览器和网络驱动程序都是最新的。
解决方案
推荐阅读
- typescript - React Native 代码中的嵌套返回给出了语法错误(“:”预期)
- firebase - 可以将 userData 写入 Firebase,无法从 Firebase 读取到字段:Flutter
- c++ - 使用源文件中的宏生成二进制文件
- reactjs - 全局导入 react 而不是在每个组件中导入 [React Hooks]
- javascript - Bootstrap 折叠响应式导航栏在小屏幕上打开后关闭
- python - 为特定频道发送持续消息 discord.py
- r - 在 R 中中断对(SQLite)数据库的 dbplyr 查询
- java - eXist-db 查询:文件:移动返回错误
- python - python - 从文件读取时,json不断返回JSONDecodeError
- teradatasql - 使用 CASE 语句和“+”添加多个列,但功能添加不正确