我有一个 python 脚本,它使用 requests 库将数据发送到 django 应用程序。然后用户切换到网页并单击一个按钮来获取编辑表单以添加一些附加信息
我希望请求收到状态代码 200 后立即切换到网页并自动单击按钮,而不是用户每次手动执行此操作。
我研究过使用 Selenium,但它似乎有点矫枉过正。我有什么想法可以做到这一点吗?
edit
当前的流程看起来有点像这样:
- 用户在客户端运行脚本
- 脚本运行并收集静态数据
- 脚本使用请求以 post 形式发送数据
- 数据保存到名为“Report”的模型中,其中一个名为“public”的布尔字段标记为 False
- 用户切换到 Web 应用程序
- 用户单击一个按钮,执行 ajax 调用并获取该报告的编辑表单(通过比较登录用户的用户名,它知道您是发送该报告的人)
- 用户添加附加数据并保存
- “public”字段更改为 True,每个人都可以看到该报告。
大部分工作都是有效的,我只是希望脚本自动切换到网页并单击按钮,而不是手动完成。我知道这有点复杂,但我希望它能更好地解释事情
我还使用 Windows 和 Chrome 作为网络浏览器
第二次编辑
所以我构建了一个小演示来玩一下。我创建了一个名为“test.html”的文件,如下所示:
<html>
<head>
<title>Test</title>
<script type='javascript/text' src='jquery.js' ></script>
</head>
<body>
<div class="container">
<button id="button1"> Fake </button>
<button id="button2"> Fake </button>
<button id="button3"> Real </button>
</div>
<script>
$(function() {
$('#button3').on('click', function() {
alert('you found it!');
});
});
</script>
</body>
</html>
正如您所看到的,运行脚本的唯一方法是单击“real”按钮。现在我已经编写了一个 python 脚本,将其显示在屏幕上:
import win32gui
class Window(object):
def __init__(self, handle):
assert handle != 0
self.handle = handle
@classmethod
def from_title(cls, title):
handle = win32gui.FindWindow(title, None) or win32gui.FindWindow(None, title)
return cls(handle)
chrome = Window.from_title('Test - Google Chrome')
win32gui.SetForegroundWindow(chrome.handle)
win32gui.SetFocus(chrome.handle)
现在我如何让它复制用户完成的按钮单击操作?可能有一种方法可以使用坐标以图形方式完成此操作,但是only way?如何确保按钮始终位于同一位置?还有比使用按钮更好的方法吗?