用于单击网页按钮的 Python 脚本

2023-12-08

我有一个 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?如何确保按钮始终位于同一位置?还有比使用按钮更好的方法吗?


那么您想要做的就是在页面打开时自动单击一个按钮?我假设您只想在某些情况下自动单击,因此将 javascript/jquery 隐藏在条件后面。

def your_view(request):
    # your standard processing
    auto_click = request.GET.get('auto_click', False)
    if auto_click is not False:
        auto_click = True
    render('yourtemplate.html', {'auto_click': auto_click })

然后,在您的模板中:

{% if auto_click %}
<script>
$(document).ready(function() {
    $('yourbutton').click();
});
</script>
{% endif %}

当用户打开网页时,只需将“?auto_click=1”附加到 URL 中,您就会得到正确的行为。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

用于单击网页按钮的 Python 脚本 的相关文章

  • 将字符串转换为带有毫秒和时区的日期时间 - Python

    我有以下 python 片段 from datetime import datetime timestamp 05 Jan 2015 17 47 59 000 0800 datetime object datetime strptime t
  • Python PAM 模块的安全问题?

    我有兴趣编写一个 PAM 模块 该模块将利用流行的 Unix 登录身份验证机制 我过去的大部分编程经验都是使用 Python 进行的 并且我正在交互的系统已经有一个 Python API 我用谷歌搜索发现pam python http pa
  • DreamPie 不适用于 Python 3.2

    我最喜欢的 Python shell 是DreamPie http dreampie sourceforge net 我想将它与 Python 3 2 一起使用 我使用了 添加解释器 DreamPie 应用程序并添加了 Python 3 2
  • 更改自动插入 tkinter 小部件的文本颜色

    我有一个文本框小部件 其中插入了三条消息 一条是开始消息 一条是结束消息 一条是在 单位 被摧毁时发出警报的消息 我希望开始和结束消息是黑色的 但被毁坏的消息 参见我在代码中评论的位置 插入小部件时颜色为红色 我不太确定如何去做这件事 我看
  • Python 多处理示例不起作用

    我正在尝试学习如何使用multiprocessing但我无法让它发挥作用 这是代码文档 http docs python org 2 library multiprocessing html from multiprocessing imp
  • pandas 替换多个值

    以下是示例数据框 gt gt gt df pd DataFrame a 1 1 1 2 2 b 11 22 33 44 55 gt gt gt df a b 0 1 11 1 1 22 2 1 33 3 2 44 4 3 55 现在我想根据
  • 如何在Windows上模拟socket.socketpair

    标准Python函数套接字 套接字对 https docs python org 3 library socket html socket socketpair不幸的是 它在 Windows 上不可用 从 Python 3 4 1 开始 我
  • Spark的distinct()函数是否仅对每个分区中的不同元组进行洗牌

    据我了解 distinct 哈希分区 RDD 来识别唯一键 但它是否针对仅移动每个分区的不同元组进行了优化 想象一个具有以下分区的 RDD 1 2 2 1 4 2 2 1 3 3 5 4 5 5 5 在此 RDD 上的不同键上 所有重复键
  • 为 pandas 数据透视表中的每个值列定义 aggfunc

    试图生成具有多个 值 列的数据透视表 我知道我可以使用 aggfunc 按照我想要的方式聚合值 但是如果我不想对两列求和或求平均值 而是想要一列的总和 同时求另一列的平均值 该怎么办 那么使用 pandas 可以做到这一点吗 df pd D
  • 运行多个 scrapy 蜘蛛的正确方法

    我只是尝试使用在同一进程中运行多个蜘蛛新的 scrapy 文档 http doc scrapy org en 1 0 topics practices html但我得到 AttributeError CrawlerProcess objec
  • Python 中的二进制缓冲区

    在Python中你可以使用StringIO https docs python org library struct html用于字符数据的类似文件的缓冲区 内存映射文件 https docs python org library mmap
  • 表达式中的 Python 'in' 关键字与 for 循环中的比较 [重复]

    这个问题在这里已经有答案了 我明白什么是in运算符在此代码中执行的操作 some list 1 2 3 4 5 print 2 in some list 我也明白i将采用此代码中列表的每个值 for i in 1 2 3 4 5 print
  • HTTPS 代理不适用于 Python 的 requests 模块

    我对 Python 还很陌生 我一直在使用他们的 requests 模块作为 PHP 的 cURL 库的替代品 我的代码如下 import requests import json import os import urllib impor
  • ExpectedFailure 被计为错误而不是通过

    我在用着expectedFailure因为有一个我想记录的错误 我现在无法修复 但想将来再回来解决 我的理解expectedFailure是它会将测试计为通过 但在摘要中表示预期失败的数量为 x 类似于它如何处理跳过的 tets 但是 当我
  • Python - 在窗口最小化或隐藏时使用 pywinauto 控制窗口

    我正在尝试做的事情 我正在尝试使用 pywinauto 在 python 中创建一个脚本 以在后台自动安装 notepad 隐藏或最小化 notepad 只是一个示例 因为我将编辑它以与其他软件一起使用 Problem 问题是我想在安装程序
  • Numpy 优化

    我有一个根据条件分配值的函数 我的数据集大小通常在 30 50k 范围内 我不确定这是否是使用 numpy 的正确方法 但是当数字超过 5k 时 它会变得非常慢 有没有更好的方法让它更快 import numpy as np N 5000
  • 如何改变Python中特定打印字母的颜色?

    我正在尝试做一个简短的测验 并且想将错误答案显示为红色 欢迎来到我的测验 您想开始吗 是的 祝你好运 法国的首都是哪里 法国 随机答案不正确的答案 我正在尝试将其显示为红色 我的代码是 print Welcome to my Quiz be
  • Nuitka 未使用 nuitka --recurse-all hello.py [错误] 编译 exe

    我正在尝试通过 nuitka 创建一个简单的 exe 这样我就可以在我的笔记本电脑上运行它 而无需安装 Python 我在 Windows 10 上并使用 Anaconda Python 3 我输入 nuitka recurse all h
  • Python - 字典和列表相交

    给定以下数据结构 找出这两种数据结构共有的交集键的最有效方法是什么 dict1 2A 3A 4B list1 2A 4B Expected output 2A 4B 如果这也能产生更快的输出 我可以将列表 不是 dict1 组织到任何其他数
  • Python 分析:“‘select.poll’对象的‘poll’方法”是什么?

    我已经使用 python 分析了我的 python 代码cProfile模块并得到以下结果 ncalls tottime percall cumtime percall filename lineno function 13937860 9

随机推荐

  • 如何从 UITableView 中删除选定的行? [复制]

    这个问题在这里已经有答案了 可能的重复 将表更改为编辑模式并删除普通 ViewController 中的行 我想从 tableView 中删除选定的行 我想向用户提供当用户在行上滑动或轻弹手指时删除该行的功能 我知道编辑风格提供了一个带有
  • 使用 std::chrono 在 C++ 中输出日期和时间

    我一直在升级一些旧代码 并尽可能更新到 c 11 以下代码是我在程序中显示时间和日期的方法 include
  • 如何使用 picasso 库实现我自己的磁盘缓存 - Android?

    我正在使用 picasso 库为我的应用程序加载图像 但我不知道如何使用 picasso 库实现我自己的磁盘 sdcard 缓存 Picasso 使用 HTTP 客户端进行磁盘缓存 如果已经配置 它将使用该客户端而不是安装自己的客户端 对于
  • 更改 UISegmentedControl 的高度

    我正在尝试改变高度UISegmentedControl使用此代码 CGRect frame mySegmentedControl frame mySegmentedControl setFrame CGRectMake frame orig
  • 我只需要重写 Toast 类的 show()

    我只需要覆盖show 方法为Toast班级 我创建了一个扩展的类Toast类 但随后我创建了一条 toast 消息 但出现异常setView View view 还没有被调用 但我不想创建自定义View方法 但使用默认方法 那么 如何才能覆
  • SecurityAttribute.Unrestricted 问题

    我对这个属性感到困惑 正如这里提到的 http msdn microsoft com en us library system security permissions securityattribute unrestricted aspx
  • 使用自定义 CSS 将 HTML 文件加载到 WebView

    我的 Android 应用程序上有一个 WebView 可以加载 WebView loadUrl 手机内部存储中的不同本地 HTML 文件 我想为它们添加一些自定义 css 样式 现在 我可以让我的应用程序编辑每个 HTML 文件并添加 C
  • scipy curve_fit 不喜欢数学模块

    在尝试创建一个示例时scipy optimize curve fit我发现scipy似乎与Python的不兼容math模块 而函数f1工作正常 f2抛出错误消息 from scipy optimize import curve fit fr
  • 添加到词典的不同方式

    有什么区别Dictionary add key value and Dictionary key value 我注意到最后一个版本没有抛出ArgumentException插入重复密钥时 但有什么理由更喜欢第一个版本 Edit 请问谁有这方
  • 警告:无法访问代码,使用 Reactjs

    我正在使用 ReactJs 我有两个组件 PrescriptionIndex 和 PrescriptionNew 将一个组件与另一个组件集成 这是我的第一个组件 PrescriptionNew import React Component
  • 为什么我的 Java 中的 PriorityBlockingQueue 无法正确排序?

    由于某种原因 当我添加到优先级队列时 它不会完全按字母顺序对我的字符串进行排序 我不明白为什么 这是添加到 PriorityBlockingQueue 的代码 String toAdd String format s s directory
  • 在 JTextField 上设置光标

    我正在用 Java 制作一个使用 JTextField 的小型应用程序 现在 我希望 一旦运行应用程序 光标就会自动放置在该位置 以便用户不必单击它然后编写文本 我已经尝试了在网上找到的几乎所有内容 setCaretPosition 0 g
  • 如何使用 cmake 将 git SHA1 作为定义传递给编译器?

    在 Makefile 中 这可以通过以下方式完成 g DGIT SHA1 git log 1 head n 1 这非常有用 因为二进制文件知道确切的提交 SHA1 因此可以在发生段错误时转储它 我怎样才能用 CMake 达到同样的效果 我制
  • 在 Python 中保存图像的最佳格式是什么,为什么 pydot 会保存无效图像?

    我在用pydot在我的机器上保存图像文件 然后使用图像模块打开该文件 但是 我使用时遇到错误Windows Photo viewer 该图像无法打开 因为它已被删除或位于不可用的位置 这是不正确的 因为图像被保存到我的桌面上 有时 图片确实
  • redis 好像服务器已经关闭了连接

    我想使用redis sub pub 但是当我订阅一个频道时 2分钟后 控制台输出异常 服务器似乎已关闭连接 redis版本 redis 3 0 3 jedis版本 2 3 0 操作系统 OS X Yosemite 10 10 5 订阅 cl
  • 连接到 Firebird 3 的 C# 程序中的“连接被远程接口拒绝”

    从 Firebird 2 5 迁移到 3 0 后 当我尝试使用 C 程序测试数据库连接时 会出现此错误 连接被远程接口拒绝 这是用于测试连接的代码 当我尝试连接到 firebird 2 5 数据库时我使用此代码 txtPassword Pr
  • 使用 PHP 访问 Windows 共享

    我需要使用 PHP 访问 Windows 共享上的 Excel 文件 但似乎遇到了身份验证问题 我在用着PHP ExcelReader打开并读取文件 在我的本地计算机上工作正常 但我放置它的服务器无权访问此共享 因此它告诉我该路径不可读 我
  • 如何使用 OleDB 避免 Excel 文件中的空行?

    我开始使用OleDB 我正在尝试从 Excel 文件 C 中 中提取大量随机数据 这是我的查询 SELECT FROM NAMED RANGE 但我有很多空行 我循环删除它们 但我不太喜欢它 是否可以仅选择至少填充了一个单元格的行 此致 A
  • 连接 MongoDB 中的两个集合

    我是 mongoDB 的初学者 我有两本收藏书和作者 姓名和作品 分别是公共栏 使用内部联接 我必须发出 Book 和 Author 中的一些列 就像这个 sql 查询 select book name book editions book
  • 用于单击网页按钮的 Python 脚本

    我有一个 python 脚本 它使用 requests 库将数据发送到 django 应用程序 然后用户切换到网页并单击一个按钮来获取编辑表单以添加一些附加信息 我希望请求收到状态代码 200 后立即切换到网页并自动单击按钮 而不是用户每次